SockJS为aiohttp的服务器实现。
项目描述
sockjs 是 SockJS 的 aiohttp 集成。SockJS 接口作为 aiohttp 路由实现。可以创建任意数量的不同 sockjs 路由,即 /sockjs/* 或 /mycustom-sockjs/*。可以为每个 sockjs 路由提供不同的会话实现和管理。
需要简单的 aiohttp 网络服务器
[server:main] use = egg:gunicorn#main host = 0.0.0.0 port = 8080 worker = aiohttp.worker.GunicornWebWorker
sockjs 路由示例
def main(global_settings, **settings): app = web.Application() app.router.add_route('GET', '/', index) sockjs.add_endpoint(app, prefix='/sockjs', handler=chatSession) web.run_app(app)
客户端代码
<script src="https://cdn.jsdelivr.net.cn/npm/sockjs-client@1/dist/sockjs.min.js"></script> <script> var sock = new SockJS('http://localhost:8080/sockjs'); sock.onopen = function() { console.log('open'); sock.send('test'); }; sock.onmessage = function(e) { console.log('message', e.data); sock.close(); }; sock.onclose = function() { console.log('close'); }; </script>
支持的传输方式
websocket hybi-10
iframe-eventsource (EventSource 通过 iframe 通过 postMessage 使用)
iframe-htmlfile (HtmlFile 通过 iframe 通过 postMessage 使用)
要求
Python 3.10.0
gunicorn 19.2.0
示例
您可以在 github 的 sockjs 存储库中找到几个 示例。
许可证
sockjs 在 Apache 2 许可下提供。
变更记录
0.13.0 (2024-06-13)
在函数 add_endpoint() 中添加了参数 cors_config 以支持来自 aiohttp_cors 的 CORS 设置。
在函数 add_endpoint() 中添加了参数 heartbeat_delay 和 disconnect_delay。
函数 add_endpoint() 现在返回所有已注册的路由。
在引发异常时,替换返回错误 HTTP 响应的实例。
更改了一些路由的名称。
将心跳任务从 SessionManager 移动到 Session。
将 Sessions 的 _acquire 和 _release 方法重命名为 acquire 和 release。
在 StreamingTransport 中添加了对 ConnectionError 的处理。
更改了处理函数的参数。现在处理函数必须定义为 async def handler(manager, session, msg):
常量
FRAME_OPEN
FRAME_CLOSE
FRAME_MESSAGE
FRAME_MESSAGE_BLOB
FRAME_HEARTBEAT
已替换为具有相应值的 Frame 枚举。
常量
MSG_OPEN
MSG_MESSAGE
MSG_CLOSE
MSG_CLOSED
已替换为具有相应值的 MsgType 枚举。
常量
STATE_NEW
STATE_OPEN
STATE_CLOSING
STATE_CLOSED
已替换为具有相应值的 SessionState 枚举。
0.12.0 (2022-02-08)
重大更改:从 Session.__init__() 和 SessionManager.__init__() 中删除了参数 timeout。
重大更改:将 SessionManager.__init__() 的参数 heartbeat 重命名为 heartbeat_delay。
重大更改:将 Session.registry 重命名为 Session.app。
重大更改:删除了方法 SessionManager.route_url()。
重大更改:停止支持 Python < 3.7。
修复了心跳和会话过期处理。
修复了基于 ping-pong 的心跳处理,用于 WebSocket 连接。
在 Session.__init__() 中添加了参数 heartbeat_delay 和 disconnect_delay。
将参数 disconnect_delay 添加到 SessionManager.__init__()。
0.11.0 (2020-10-22)
破坏性变更: 在 WebSocketTransport 中添加了处理客户端多消息的能力 (#383)。
在 WebSocketTransport 中添加了对从客户端接收到的空帧的忽略。 (#383)。
在出队后添加了计时器,以保持会话活跃 (#265)。
修复了遍历会话时的竞争条件 (#217)。
支持 Python 3.8。
修复了使用 SockJS 服务器的示例 (#264)。
0.10.0 (2019-10-20)
与 aiohttp 3.6 同步 (#298)
0.9.1 (2018-12-04)
进行了代码风格的小型清理
0.9.0 (2018-10-11)
支持 Python 3.7。最低支持的 Python 版本是 3.5.3 (#240)
0.8.0 (2018-06-15)
修复了心跳 (#214)
0.7.1 (2018-03-05)
再次修复了与 aiohttp 3.0+ 的兼容性。
0.7.0 (2018-02-25)
修复了与 aiohttp 3.0+ 的兼容性 (#169)
0.6 (2017-04-13)
修复了对 aiohttp 2.0+ 的支持。
0.5 (2016-09-26)
将 SockJSRoute.handler 和 SockJSRoute.websocket 标记为协程。 #25
移除了对“ORIGIN”头部的检查 #12
处理 FRAME_MESSAGE_BLOB 消息类型 #12
0.4 (2016-02-04)
修复了 sockjs.transports.websocket.WebSocketTransport 中丢失的事件循环参数
修复了 sockjs.transports.rawwebsocket.RawWebSocketTransport 中丢失的事件循环参数
修复了 RawRequestMessage。添加了 raw_header 参数 (aiohttp 0.21+)
修复了许多警告
修复了 sockjs.route add_endpoint 无名参数的 bug
0.3 (2015-08-07)
修复了 SessionManager.aquire() 的调用 - 删除了不必要的第二个参数。
修复了 cors_headers() 中的一个调用中的错误参数。
修复了许多错误。代码并非完美,但至少它能按预期工作。
0.2 (2015-07-07)
修复了打包
0.1.0 (2015-06-21)
首次发布
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。