Python的WebSocket客户端。支持hybi-13。
项目描述
=================
websocket-client
=================
websocket-client模块是Python的WebSocket客户端。它提供WebSocket的低级API。所有API都是同步函数。
websocket-client只支持hybi-13。
注意
============
在版本0.14.0中,我们进行了重大更改。
所以,请仔细测试。
许可证
============
- LGPL
安装
=============
此模块已在Python 2.7和Python 3.x上进行了测试。
输入“python setup.py install”或“pip install websocket-client”进行安装。
此模块依赖于
- six
- backports.ssl_match_hostname(Python 2.x)
Python 3如何
===========================
现在,从版本0.14.0开始,我们支持单源代码的Python 3。感谢,@battlemidget和@ralphbean。
HTTP代理
=============
支持通过http代理访问WebSocket。
代理服务器必须允许“CONNECT”方法到WebSocket端口。
默认squid设置是“只允许连接HTTPS端口”。
当前websocket-client的WebSocket客户端实现正在使用“CONNECT”方法通过代理。
示例
=============
低级API示例:
from websocket import create_connection
ws = 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示例
from websocket import create_connection
ws = create_connection("ws://echo.websocket.org/".
sockopt=((socket.IPPROTO_TCP, socket.TCP_NODELAY),) )
JavaScript WebSocket-like API示例:
import websocket
import thread
import time
def on_message(ws, message)
print message
def on_error(ws, error)
打印错误
def on_close(ws)
打印 "### 关闭 ###"
def on_open(ws)
def run(*args)
for i in range(3)
time.sleep(1)
ws.send("Hello %d" % i)
time.sleep(1)
ws.close()
打印 "线程终止..."
thread.start_new_thread(run, ())
if __name__ == "__main__"
websocket.enableTrace(True)
ws = websocket.WebSocketApp("ws://echo.websocket.org/",
on_message = on_message,
on_error = on_error,
on_close = on_close)
ws.on_open = on_open
ws.run_forever()
wsdump.py
============
wsdump.py 是一个简单的 WebSocket 测试(调试)工具。
echo.websocket.org 的示例:
$ wsdump.py ws://echo.websocket.org/
按 Ctrl+C 退出
> Hello, WebSocket
< Hello, WebSocket
> 你好吗?
< 你好吗?
用法
---------
用法:
wsdump.py [-h] [-v [VERBOSE]] ws_url
WebSocket 简单转储工具
位置参数
ws_url WebSocket URL。例如:ws://echo.websocket.org/
可选参数
-h, --help 显示此帮助信息并退出
WebSocketApp
-v VERBOSE, --verbose VERBOSE 设置详细模式。如果设置为 1,则显示操作码。如果设置为 2,则启用 WebSocket 模块的跟踪
示例:
$ wsdump.py ws://echo.websocket.org/
$ wsdump.py ws://echo.websocket.org/ -v
$ wsdump.py ws://echo.websocket.org/ -vv
变更日志
============
- v0.15.0
- 修复发送大消息时的异常 (#84)
- v0.14.1
- 修复在 Python2.6 上工作的问题 (#83)
- v0.14.0
- 支持 python 3(#73)
- 支持 IPv6(#77)
- 支持显式 web 代理(#57)
- 在连接方法选项中指定 cookie(#82)
- v0.13.0
- 接收大量数据时出现 MemoryError (~60 MB) (#59)
- 控制分段(ISSUE#55)
- 服务器证书验证(ISSUE#56)
- PyPI tarball 缺少 test_websocket.py(ISSUE#65)
- 负载长度编码错误(ISSUE#58)
- 默认禁用 Nagle 算法(ISSUE#41)
- 在 WebSocketApp 中改进事件循环(ISSUE#63)
- 默认跳过需要互联网访问的测试(ISSUE#66)
- v0.12.0
- 支持 WebSocketApp 的 keep alive(#34)
- 修复一些 SSL 错误(ISSUE#35, #36)
- 修复 "Timing out leaves websocket library in bad state"(ISSUE#37)
- 修复 "WebSocketApp.run_with_no_err() silently eats all exceptions"(ISSUE#38)
- 对于 ws/wss 超时将抛出 WebSocketTimeoutException(ISSUE#40)
- 改进 wsdump 消息(ISSUE#42)
- 支持分段消息(ISSUE#43)
- 修复一些错误
- v0.11.0
- 只记录非正常关闭状态(ISSUE#31)
- 修复默认 Origin 不是 URI(ISSUE#32)
- 支持 fileno(ISSUE#33)
- v0.10.0
- 允许设置 WebSocketApp 的 HTTP Header(ISSUE#27)
- 修复 pydoc 中的错误(ISSUE#28)
- 将 socketopt 标志传递给 WebSocket 构造函数(ISSUE#29)
- WebSocket.send 在长数据失败(ISSUE#30)
- v0.9.0
- 允许在 WebSocketApp.send 中设置操作码(ISSUE#25)
- 允许修改 Origin(ISSUE#26)
- v0.8.0
- 许多错误修复
- 一些性能改进
- v0.7.0
- 修复读取长数据的问题。(ISSUE#12)
- 修复缓冲区大小边界违规
- v0.6.0
- 补丁:UUID4, self.keep_running, mask_key (ISSUE#11)
- 添加 wsdump.py 工具
- v0.5.2
- 修复 Echo App Demo 抛出错误:'NoneType' 对象没有属性 'opcode (ISSUE#10)
- v0.5.1
- 删除无效的打印语句。
- v0.5.0
- 支持 hybi-13 协议。
- v0.4.1
- 修复不正确的自定义头顺序错误(ISSUE#1)
websocket-client
=================
websocket-client模块是Python的WebSocket客户端。它提供WebSocket的低级API。所有API都是同步函数。
websocket-client只支持hybi-13。
注意
============
在版本0.14.0中,我们进行了重大更改。
所以,请仔细测试。
许可证
============
- LGPL
安装
=============
此模块已在Python 2.7和Python 3.x上进行了测试。
输入“python setup.py install”或“pip install websocket-client”进行安装。
此模块依赖于
- six
- backports.ssl_match_hostname(Python 2.x)
Python 3如何
===========================
现在,从版本0.14.0开始,我们支持单源代码的Python 3。感谢,@battlemidget和@ralphbean。
HTTP代理
=============
支持通过http代理访问WebSocket。
代理服务器必须允许“CONNECT”方法到WebSocket端口。
默认squid设置是“只允许连接HTTPS端口”。
当前websocket-client的WebSocket客户端实现正在使用“CONNECT”方法通过代理。
示例
=============
低级API示例:
from websocket import create_connection
ws = 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示例
from websocket import create_connection
ws = create_connection("ws://echo.websocket.org/".
sockopt=((socket.IPPROTO_TCP, socket.TCP_NODELAY),) )
JavaScript WebSocket-like API示例:
import websocket
import thread
import time
def on_message(ws, message)
print message
def on_error(ws, error)
打印错误
def on_close(ws)
打印 "### 关闭 ###"
def on_open(ws)
def run(*args)
for i in range(3)
time.sleep(1)
ws.send("Hello %d" % i)
time.sleep(1)
ws.close()
打印 "线程终止..."
thread.start_new_thread(run, ())
if __name__ == "__main__"
websocket.enableTrace(True)
ws = websocket.WebSocketApp("ws://echo.websocket.org/",
on_message = on_message,
on_error = on_error,
on_close = on_close)
ws.on_open = on_open
ws.run_forever()
wsdump.py
============
wsdump.py 是一个简单的 WebSocket 测试(调试)工具。
echo.websocket.org 的示例:
$ wsdump.py ws://echo.websocket.org/
按 Ctrl+C 退出
> Hello, WebSocket
< Hello, WebSocket
> 你好吗?
< 你好吗?
用法
---------
用法:
wsdump.py [-h] [-v [VERBOSE]] ws_url
WebSocket 简单转储工具
位置参数
ws_url WebSocket URL。例如:ws://echo.websocket.org/
可选参数
-h, --help 显示此帮助信息并退出
WebSocketApp
-v VERBOSE, --verbose VERBOSE 设置详细模式。如果设置为 1,则显示操作码。如果设置为 2,则启用 WebSocket 模块的跟踪
示例:
$ wsdump.py ws://echo.websocket.org/
$ wsdump.py ws://echo.websocket.org/ -v
$ wsdump.py ws://echo.websocket.org/ -vv
变更日志
============
- v0.15.0
- 修复发送大消息时的异常 (#84)
- v0.14.1
- 修复在 Python2.6 上工作的问题 (#83)
- v0.14.0
- 支持 python 3(#73)
- 支持 IPv6(#77)
- 支持显式 web 代理(#57)
- 在连接方法选项中指定 cookie(#82)
- v0.13.0
- 接收大量数据时出现 MemoryError (~60 MB) (#59)
- 控制分段(ISSUE#55)
- 服务器证书验证(ISSUE#56)
- PyPI tarball 缺少 test_websocket.py(ISSUE#65)
- 负载长度编码错误(ISSUE#58)
- 默认禁用 Nagle 算法(ISSUE#41)
- 在 WebSocketApp 中改进事件循环(ISSUE#63)
- 默认跳过需要互联网访问的测试(ISSUE#66)
- v0.12.0
- 支持 WebSocketApp 的 keep alive(#34)
- 修复一些 SSL 错误(ISSUE#35, #36)
- 修复 "Timing out leaves websocket library in bad state"(ISSUE#37)
- 修复 "WebSocketApp.run_with_no_err() silently eats all exceptions"(ISSUE#38)
- 对于 ws/wss 超时将抛出 WebSocketTimeoutException(ISSUE#40)
- 改进 wsdump 消息(ISSUE#42)
- 支持分段消息(ISSUE#43)
- 修复一些错误
- v0.11.0
- 只记录非正常关闭状态(ISSUE#31)
- 修复默认 Origin 不是 URI(ISSUE#32)
- 支持 fileno(ISSUE#33)
- v0.10.0
- 允许设置 WebSocketApp 的 HTTP Header(ISSUE#27)
- 修复 pydoc 中的错误(ISSUE#28)
- 将 socketopt 标志传递给 WebSocket 构造函数(ISSUE#29)
- WebSocket.send 在长数据失败(ISSUE#30)
- v0.9.0
- 允许在 WebSocketApp.send 中设置操作码(ISSUE#25)
- 允许修改 Origin(ISSUE#26)
- v0.8.0
- 许多错误修复
- 一些性能改进
- v0.7.0
- 修复读取长数据的问题。(ISSUE#12)
- 修复缓冲区大小边界违规
- v0.6.0
- 补丁:UUID4, self.keep_running, mask_key (ISSUE#11)
- 添加 wsdump.py 工具
- v0.5.2
- 修复 Echo App Demo 抛出错误:'NoneType' 对象没有属性 'opcode (ISSUE#10)
- v0.5.1
- 删除无效的打印语句。
- v0.5.0
- 支持 hybi-13 协议。
- v0.4.1
- 修复不正确的自定义头顺序错误(ISSUE#1)
项目详细信息
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源代码分发
websocket-client-py3-0.15.0.tar.gz (187.7 kB 查看哈希值)