用于Python的零帧WebSocket API

zeroframe-ws-client的Python项目详细描述


零帧

versiondownloadslicensepythonbuild

用于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.logzeroframe.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服务器有时会发送通常由包装器处理的命令(notificationprogresserrorpromptconfirmsetSiteInfosetAnnouncerInfoupdatingredirectinjectHtmlinjectScript)。因为没有包装器,如果需要,您需要自己处理这些命令。命令responseping已经由该客户机处理,因此您不需要处理它们。在

发送命令

您可以使用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文件。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JavaFX JavaFX。打印印刷工的工作。createPrinterJob()在mac上始终为空   如何在JavaEE和Spring引导中重新加载属性?   java获得了特定的进程CPU使用率   java RDD之后的空文件是什么。保存ASTEXTFILE?   在pubQuery模板中定义表模式的java   java JMC飞行记录器不显示自定义方法   java如何在循环中存储用户以前的值?   安卓中的java转换时间(毫秒)   java自定义卡片视图形状   groovy如何为Java程序编写输入脚本   性能JMeter:java。网NoRouteToHostException:无法分配请求的地址(地址不可用)   java Java7垃圾收集器如何工作?   用java进行单元测试   java如何将因子代码转换为素数和复合标识符?