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-2
0

通过SSL连接。

mkvirtualenv your_env_name
pip install socketIO-client-2
1

通过 请求库指定参数、标题、cookies和代理。

mkvirtualenv your_env_name
pip install socketIO-client-2
2

永远等待。

mkvirtualenv your_env_name
pip install socketIO-client-2
3

贡献

我遵循文森特·德里森提出的git flow<;http://nvie.com/posts/a-successful-git-branching-model/>;模型。因此,我请求您向开发部门提出请求。另外,我支持Python2.6、2.7和3.4,因此请确保您的更改与所有三个版本兼容。travis ci设置为在请求拉取时自动运行三个python版本的测试,因此如果添加测试以覆盖所做的任何更改,则应该能够查看它们是否兼容。

许可证

此软件在麻省理工学院许可证下提供。

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

0.5.1

  • 添加了WebSocket超时时的错误处理
  • 修复了由于travis odom而在自定义命名空间中发送确认的问题

0.5</H3>
  • 重写库以使用co保存内存的例程而不是线程
  • 提高连接弹性
  • 由于francis bull,增加了对xhr轮询的支持
  • 由于bernard pratz,增加了对jsonp轮询的支持
  • 添加了对查询参数和cookies的支持

0.4</H3>
  • 由于rui和sajal,增加了对自定义头和代理的支持
  • 由于zac lee,增加了对服务器端回调的支持
  • 添加了低级socketio以删除循环引用
  • 由于Alexandre Bourget,已将频道功能合并到BaseNamespace中

0.3</H3>
  • 增加了对安全连接的支持
  • 添加了socketio.wait()
  • 改进了rhythmicthread和listenerthread中的异常处理

0.2</H3>
  • 由于Paul Kienzle,增加了对回调和频道的支持
  • 采纳了Josh Vanderlinden和Ian Fitzpatrick的建议

0.1</H3>
  • 包装好的stackoverflow中的代码
  • 在连接失败时向析构函数添加异常处理

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

推荐PyPI第三方库


热门话题
java如何通过解决错误“活动无法转换为片段”将片段传递给类构造函数?   Java中清理Code39条码数据的regex帮助   将java转换为C++   java无法在Android Studio中生成签名的apk,出现错误   从数学方程出发   MySQL和Java内存问题   如何强制Java抛出算术异常?   java为什么JDBC将零端口视为空(默认)端口?   java如何在没有“changelog主题”的情况下加入KStream和KTable   排序我尝试合并两个排序的数组,但得到的是java。lang.ArrayIndexOutofBounds异常:5无法找出原因   如何在java中求大长度矩阵的逆?   基于maven构建的java生成类路径字符串   java每20个字符分割一个字符串,然后将每个部分打印到控制台   将字符串数字字转换为字符串数字:Java   在特定区域使用混合类型的java填充字节数组   尽管java类在开关块中实例化,但它只能调用接口方法