用于Python的零帧WebSocket API
zeroframe-ws-client的Python项目详细描述
零帧
用于Python的ZeroFrame WebSocket API。在
说明
这是ZeroFrame API的Python WebSocket客户端。它几乎可以在零网支持的地方程序,但它是使用零网框架的默认功能。在
安装
要求
ContentHash需要Python3.5或更高版本。在
从PyPI
推荐的安装ContentHash的方法是使用PIP从PyPI中安装。在
pip install zeroframe-ws-client
来源
或者,也可以从源代码安装它。在
^{pr2}$使用
导入包
您可以从zeroframe_ws_client
包导入ZeroFrameJS。在
fromzeroframe_ws_clientimportZeroFrame
创建连接
要创建连接,需要指定ZeroNet站点地址。在
zeroframe=ZeroFrame('1HeLLo4uzjaLetFx6NH3PMwFP3qbRbTf3D')
如果ZeroNet实例正在使用Multiuser
插件,并且您希望使用特定的帐户,则需要指定要使用的帐户的主地址。实例上必须已存在帐户。在
zeroframe=ZeroFrame('1HeLLo4uzjaLetFx6NH3PMwFP3qbRbTf3D',multiuser_master_address='1Hxki73XprDRedUdA3Remm3kBX5FZxhFR3')
如果要创建新帐户,还需要指定它的主种子。请注意,此功能在不受信任的代理上不安全。在
zeroframe=ZeroFrame('1HeLLo4uzjaLetFx6NH3PMwFP3qbRbTf3D',multiuser_master_address='1KAtuzxwbD1QuMHMuXWcUdoo5ppc5wnot9',multiuser_master_seed='fdbaf75427ba69a3d4aa8e19372e05879e9e2d866e579dd30be25e6fab7e3fb2')
如果需要,还可以指定ZeroNet实例的协议、主机和端口。在
zeroframe=ZeroFrame('1HeLLo4uzjaLetFx6NH3PMwFP3qbRbTf3D',instance_host='192.168.1.1',instance_port=8080,instance_secure=True)
默认情况下,不会显示来自zeroframe.log
和zeroframe.error
的日志和错误消息。如果愿意,还可以将它们显示为调试信息。在
zeroframe=ZeroFrame('1HeLLo4uzjaLetFx6NH3PMwFP3qbRbTf3D',show_log=True,show_error=True)
默认情况下,如果连接每5秒关闭一次,客户端将尝试重新连接WebSocket。您还可以配置时间延迟和总尝试次数。延迟以毫秒为单位指定。尝试次数-1
表示无穷大,0
表示零(禁用重新连接)。在
zeroframe=ZeroFrame('1HeLLo4uzjaLetFx6NH3PMwFP3qbRbTf3D',reconnect_attempts=10,reconnect_delay=1000)
然后,客户端将获得站点的包装器密钥,并使用它连接到WebSocket。在
现在可以正常使用ZeroFrame API。请记住,没有包装器,所以包装器命令不可用。客户机直接连接到WebSocket服务器,因此您需要使用它的命令。在
请注意,WebSocket服务器有时会发送通常由包装器处理的命令(notification
,progress
,error
,prompt
,confirm
,setSiteInfo
,setAnnouncerInfo
,updating
,redirect
,injectHtml
,injectScript
)。因为没有包装器,如果需要,您需要自己处理这些命令。命令response
和ping
已经由该客户机处理,因此您不需要处理它们。在
发送命令
您可以使用cmd
方法发出命令。在
zeroframe.cmd('siteInfo',{},lambdaresult:print(result))
您还可以使用cmdp
方法将结果作为Python asyncio futures获得。在
result=zeroframe.cmd('siteInfo',{})print(result.result())
发送响应
要提交响应,您需要使用response
命令。在
zeroframe.response(10,'Hello World')
日志信息
还有log
和{
zeroframe.log('Connected')zeroframe.error('Connection failed')
处理连接
还有一些公共处理程序方法,您可以重写这些方法以将自己的逻辑添加到ZeroFrame。在
classZeroApp(ZeroFrame):defon_request(self,cmd,message):ifcmd=='helloWorld':self.log('Hello World')defon_open_websocket(self):self.log('Connected to WebSocket')defon_error_websocket(self,error):self.error('WebSocket connection error')defon_close_websocket(self):self.error('WebSocket connection closed')
闭合连接
您可以使用close
方法关闭到ZeroFrame API的WebSocket连接。在
zeroframe.close()
直接调用命令
也可以通过__getattr__
方法直接调用命令。命令名被接受为对象的属性,参数被接受为方法的参数。命令返回asyncio.Future
和结果。在
- 不能使用
zeroframe.cmdName()
访问没有参数的命令。在 - 可以使用
zeroframe.cmdName(key1=value1, key2=value2)
访问带有关键字参数的命令。在 - 可以使用
zeroframe.cmdName(value1, value2)
访问具有普通参数的命令。在
siteInfo=zeroframe.siteInfo()print(siteInfo.result())
其他示例
您也可以查看^{
版本控制
此库使用SemVer进行版本控制。有关可用版本,请参阅此存储库上的the tags。在
许可证
这个图书馆是麻省理工学院授权的许可证。有关详细信息,请参阅LICENSE文件。在
- 项目
标签: