socket.io客户端库
socketIO-client-2的Python项目详细描述
socketio-client-2
这是一个用于python的客户机库。您可以使用它为socket.io服务器编写测试代码。
请注意,此版本实现了不向后兼容的socket.io protocol 1.x 。如果您想使用socket.io协议0.9(与gevent socketio兼容)进行通信,请使用socketio客户端0.5.6
安装
在隔离的环境中安装软件包。
mkvirtualenv your_env_name pip install socketIO-client-2
用法
激活隔离环境。
workon your_env_name
启动socket.io服务器或此提供的测试服务器。
# Get package folder PACKAGE_FOLDER=`python -c "import os, socketIO_client;\ print(os.path.dirname(socketIO_client.__file__))"` # Install the server dependencies cd $PACKAGE_FOLDER/tests/ npm install # Start socket.io server DEBUG=* node $PACKAGE_FOLDER/tests/serve.js # Start proxy server in a separate terminal on the same machine DEBUG=* node $PACKAGE_FOLDER/tests/proxy.js # To run the tests in a third terminal cd $PACKAGE_FOLDER nosetests --with-coverage --cover-package=socketIO_client tests/
有关调试信息,请先运行这些命令。
import logging logging.getLogger('requests').setLevel(logging.WARNING) logging.basicConfig(level=logging.DEBUG)
发射,
from socketIO_client import SocketIO, LoggingNamespace with SocketIO('localhost', 8000, LoggingNamespace) as socketIO: socketIO.emit('aaa') socketIO.wait(seconds=1)
通过回调发出。
from socketIO_client import SocketIO, LoggingNamespace def on_bbb_response(*args): print('on_bbb_response', args) with SocketIO('localhost', 8000, LoggingNamespace) as socketIO: socketIO.emit('bbb', {'xxx': 'yyy'}, on_bbb_response) socketIO.wait_for_callbacks(seconds=1)
定义事件。
from socketIO_client import SocketIO, LoggingNamespace def on_aaa_response(*args): print('on_aaa_response', args) socketIO = SocketIO('localhost', 8000, LoggingNamespace) socketIO.on('aaa_response', on_aaa_response) socketIO.emit('aaa') socketIO.wait(seconds=1)
在命名空间中定义事件。
from socketIO_client import SocketIO, BaseNamespace class Namespace(BaseNamespace): def on_aaa_response(self, *args): print('on_aaa_response', args) self.emit('bbb') socketIO = SocketIO('localhost', 8000, Namespace) socketIO.emit('aaa') socketIO.wait(seconds=1)
定义标准事件。
from socketIO_client import SocketIO, BaseNamespace class Namespace(BaseNamespace): def on_connect(self): print('[Connected]') socketIO = SocketIO('localhost', 8000, Namespace) socketIO.wait(seconds=1)
在单个套接字上定义不同的命名空间。
mkvirtualenv your_env_name pip install socketIO-client-20
通过SSL连接。
mkvirtualenv your_env_name pip install socketIO-client-21
mkvirtualenv your_env_name pip install socketIO-client-22
永远等待。
mkvirtualenv your_env_name pip install socketIO-client-23
贡献
我遵循文森特·德里森提出的git flow<;http://nvie.com/posts/a-successful-git-branching-model/>;模型。因此,我请求您向开发部门提出请求。另外,我支持Python2.6、2.7和3.4,因此请确保您的更改与所有三个版本兼容。travis ci设置为在请求拉取时自动运行三个python版本的测试,因此如果添加测试以覆盖所做的任何更改,则应该能够查看它们是否兼容。
许可证
此软件在麻省理工学院许可证下提供。
学分
- guillermo rauch编写了socket.io规范。
- hiroki ohtani 撰写了 websocket客户端
- rod 为python客户机到socket.io服务器的原型编写了a
- alexandre bourget 编写了 gevent socketio ,这是用python编写的socket.io服务器。
- paul kienzle , zac lee , josh vanderlinden , ian fitzpatrick , 卢卡斯·克莱因ow">Rui Chicoria , Travis Odom , Patrick Huber , Brad Campbell , Daniel Campbell , sean arietta 提交了扩展socket.io协议支持的代码。
- bernard pratz , francis bull 编写了原型以支持xhr轮询和jsonp轮询。
- eric chen , denis zinevich , thiago hersan , nayef copty , jórgen karlsson , branden ghena , tim landscheidt , matt porritt 建议的方法使连接更加牢固。
- merlijn van deen , frederic sureau , marcus cobden , draw hutchis在 , wurrd , adam kecer , alex monk , vishal p r , john vandenberg , thomas grainger 提议的更改使库对您更加友好和实用!
0.7.2
- 命名空间日志修复程序
0.7.1
- 更新说明
0.7.0
- 叉形包装
- 添加了二进制支持
0.6.5
- 更新了等待循环,使其在WebSocket传输下更具响应性
0.6.4
- 修复了对Python3的支持
- 固定线程清理
0.6.3
- 升级到socket.io protocol 1.x用于WebSocket传输
- 添加锁以解决轮询传输的并发问题
- 固定SSL支持
0.6.1
- 由于Sean Arietta和Joe Palmer,已升级到Socket.io Protocol 1.x
0.5.6
- 支持0.8.2请求的后端口
0.5.5
- 修复了服务器重新启动时的重新连接问题
- 修复了调用'u reconnect(),以便实际调用它
- 设置默认名称空间=无
- 增加了对Python3.4的支持
0.5.3
- 如果客户端要断开连接,则更新等待循环以退出
- 修复了调用@connect()以便只调用一次的问题
- 将heartbeat间隔设置为heartbeat超时的一半
0.5.2
- 将secure=true替换为host=' https://example.com '
- 由于Travis Odom,修正了发送心跳
0.5.1
- 添加了WebSocket超时时的错误处理
- 修复了由于travis odom而在自定义命名空间中发送确认的问题