用于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, --help show 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
- 项目
标签: