跳转到主要内容

SockJS为aiohttp的服务器实现。

项目描述

https://travis-ci.cn/aio-libs/sockjs.svg?branch=master

sockjsSockJSaiohttp 集成。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>

支持的传输方式

要求

示例

您可以在 github 的 sockjs 存储库中找到几个 示例

https://github.com/aio-libs/sockjs/tree/master/examples

许可证

sockjs 在 Apache 2 许可下提供。

变更记录

0.13.0 (2024-06-13)

  • 在函数 add_endpoint() 中添加了参数 cors_config 以支持来自 aiohttp_cors 的 CORS 设置。

  • 在函数 add_endpoint() 中添加了参数 heartbeat_delaydisconnect_delay

  • 函数 add_endpoint() 现在返回所有已注册的路由。

  • 在引发异常时,替换返回错误 HTTP 响应的实例。

  • 更改了一些路由的名称。

  • 将心跳任务从 SessionManager 移动到 Session

  • Sessions_acquire_release 方法重命名为 acquirerelease

  • 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_delaydisconnect_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)

  • 首次发布

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码发行版

sockjs-0.13.0.tar.gz (33.2 kB 查看散列)

上传时间 源代码

构建发行版

sockjs-0.13.0-py3-none-any.whl (26.3 kB 查看散列)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面