
5monkeys/sockersocker是一个基于asyncio的单进程服务,采用非阻塞I/O模型,作为Redis发布/订阅(pub/sub)与WebSocket之间的代理服务器。它通过WebSocket服务器端口接收客户端连接,同时与Redis建立连接并订阅指定通道,实现Redis消息与WebSocket客户端之间的实时转发。socker使用独立的Redis发布/订阅通道,支持与其他应用共享Redis数据库。
foo.*、foo.bar.*)订阅消息适用于需要通过WebSocket实现实时消息推送的场景,如:
通过pip安装socker:
bashpip install socker
启动socker服务器的基本命令格式:
bash$ socker [选项]
| 选项 | 描述 | 默认值 |
|---|---|---|
-i INTERFACE | 监听接口 | localhost |
-p PORT | 监听端口 | 8765 |
-v | 启用详细输出 | - |
--redis-host=HOST | Redis服务器主机 | localhost |
--redis-port=PORT | Redis服务器端口 | 6379 |
--redis-db=DB | Redis数据库编号 | 0 |
--redis-password=PASSWORD | Redis认证密码 | - |
--logto FILE | 日志输出到文件(默认输出到控制台) | - |
--version | 显示版本信息 | - |
-? --help | 显示帮助信息 | - |
bash$ socker --help
启动默认配置的socker服务器:
bashsocker
自定义监听端口和Redis连接参数:
bashsocker -i 0.0.0.0 -p 9000 --redis-host=redis.example.com --redis-port=6380 --redis-db=1 --redis-password=secret
从其他应用向socker发布消息需通过Redis客户端发送Message对象到socker通道。以下是Python示例:
pythonfrom socker import Message import redis # 初始化Redis客户端 redis_client = redis.Redis(host='localhost', port=6379, db=0) # 定义消息通道和数据 channel = 'foo.bar.42' data = { 'yes': [ 'yes', 'no', 'baz' ] } # 发布消息到socker redis_client.publish('socker', Message(channel, data))
WebSocket客户端订阅以下模式将收到上述示例消息:
foo.bar.42foo.bar.*(匹配foo.bar.下的所有子通道)foo.*(匹配foo.下的所有层级子通道)VERSION文件中的版本号bashgit commit -m "Bump version to x.y.z" git tag -a vx.y.z -m "Version x.y.z"
bashpython setup.py sdist python setup.py bdist_wheel
bashtwine upload dist/*
注:Twine是安全上传Python包到PyPi的工具,详情参见Twine。
感谢以下开源项目提供的技术支持:
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务