用于Python的WebSocket客户端的Fork。修复了大数据负载下的发送性能问题

hkube-websocket-client的Python项目详细描述


websocket客户端模块是python的websocket客户端。这为WebSocket提供了底层api。所有api都是同步函数。在

websocket客户端仅支持hybi-13。在

许可证

  • BSD

安装

这个模块在python2.7和python3.4+上进行了测试。在

键入“python设置.py安装“或”pip install websocket client“来安装。在

小心!在

从v0.16.0开始,我们可以通过python3的“pip install websocket client”进行安装。在

此模块依赖于

  • six
  • backports.ssl_match_hostname for Python 2.x

性能

在纯python上,“send”和“validate_utf8”方法太慢了。如果您想获得更好的性能,请同时安装numpy和wsaccel。在

Python3怎么样

现在,我们在0.14.0版的单源代码上支持Python3。谢谢,侏儒和拉尔夫比恩。在

HTTP代理

支持通过http代理访问websocket。 代理服务器必须允许“CONNECT”方法到websocket端口。 默认squid设置为“只允许连接HTTPS端口”。在

websocket客户端的当前实现是通过代理使用“CONNECT”方法。在

示例

importwebsocketws=websocket.WebSocket()ws.connect("ws://example.com/websocket",http_proxy_host="proxy_host_name",http_proxy_port=3128)

示例

长寿命连接

这个例子类似于使用JavaScript的浏览器中WebSocket代码的外观。在

^{pr2}$

短暂的一次性发送接收

这是如果你想传达一个短消息,并在完成后立即断开连接。在

fromwebsocketimportcreate_connectionws=create_connection("ws://echo.websocket.org/")print("Sending 'Hello, World'...")ws.send("Hello, World")print("Sent")print("Receiving...")result=ws.recv()print("Received '%s'"%result)ws.close()

如果要自定义套接字选项,请设置sockopt。在

sockopt示例

fromwebsocketimportcreate_connectionws=create_connection("ws://echo.websocket.org/",sockopt=((socket.IPPROTO_TCP,socket.TCP_NODELAY),))

更高级:自定义类

如果您想自己处理细节,您也可以为连接编写自己的类。在

importsocketfromwebsocketimportcreate_connection,WebSocketclassMyWebSocket(WebSocket):defrecv_frame(self):frame=super().recv_frame()print('yay! I got this frame: ',frame)returnframews=create_connection("ws://echo.websocket.org/",sockopt=((socket.IPPROTO_TCP,socket.TCP_NODELAY,1),),class_=MyWebSocket)

常见问题解答

如何禁用ssl证书验证?

请将sslopt设置为{“cert_reqs”:ssl.CERT_无}. 在

WebSocketApp示例

ws=websocket.WebSocketApp("wss://echo.websocket.org")ws.run_forever(sslopt={"cert_reqs":ssl.CERT_NONE})

创建连接示例

ws=websocket.create_connection("wss://echo.websocket.org",sslopt={"cert_reqs":ssl.CERT_NONE})

WebSocket示例

ws=websocket.WebSocket(sslopt={"cert_reqs":ssl.CERT_NONE})ws.connect("wss://echo.websocket.org")

如何禁用主机名验证?

请将sslopt设置为{“check_hostname”:False}。 (自v0.18.0起)

WebSocketApp示例

ws=websocket.WebSocketApp("wss://echo.websocket.org")ws.run_forever(sslopt={"check_hostname":False})

创建连接示例

ws=websocket.create_connection("wss://echo.websocket.org",sslopt={"check_hostname":False})

WebSocket示例

ws=websocket.WebSocket(sslopt={"check_hostname":False})ws.connect("wss://echo.websocket.org")

如何启用SNI

SNI支持可用于python2.7.9+和3.2+。只要有可能,它将自动启用。在

子协议。

服务器需要支持子协议,请这样设置子协议。在

次级方案样本

ws=websocket.create_connection("ws://example.com/websocket",subprotocols=["binary","base64"])

在wsdump.py在

在wsdump.py是简单的WebSocket测试(调试)工具。在

样品echo.websocket.org公司名称:

$ wsdump.py ws://echo.websocket.org/
Press Ctrl+C to quit
> Hello, WebSocket
< Hello, WebSocket
> How are you?
< How are you?

用法

用法:

wsdump.py [-h] [-v [VERBOSE]] ws_url

WebSocket简单转储工具

位置参数:
ws_url websocket url。示例:ws://echo.websocket.org/
可选参数:
-h, --helpshow this help message and exit
WebSocketApp
^{tb2}$

示例:

$ wsdump.py ws://echo.websocket.org/
$ wsdump.py ws://echo.websocket.org/ -v
$ wsdump.py ws://echo.websocket.org/ -vv

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

推荐PyPI第三方库


热门话题
java找不到适合makeText的方法   如何将java数组转换为prolog列表并使用它进行jpl查询?   安卓中显示ArrayList的java子类ArrayAdapter   Java8GroupingBy到包含列表的映射中   java Json字符串,带有要映射的嵌套对象<string,string>   java Hibernate中的包和列表有什么区别?   java Spring REST模板指定Jackson视图   java如何在继承的类中返回字符串?   调试Java ArrayQue删除和轮询方法错误   带有NetBeans 7.4的java JSP自定义标记Struts2   java无法从加载jar文件。蝙蝠锉   无法解析java image_项“未显示在下拉列表中且无法键入”   jdoDetachedState设置为null的java查询实体   scala使用Cypher CREATE命令和属性映射,来自Java   minecraft中的java/me并没有被我编写的插件禁用   java Cucumber框架设置   java以奇怪的方式遍历LinkedList?   java JPA将布尔字段配置为保留为整数   月球着陆器中的java Android垃圾收集