aiohttp的sockjs服务器实现。
sockjs的Python项目详细描述
sockjs是 aiohttp。SockJS接口 实现为aiohttp路由。它有可能创造出任何数字 不同的sockjs路径,即/sockjs/*或 /mycustom sockjs/*。您可以提供不同的会话实现 以及每个sockjs路由的管理。
需要简单的aiohttp web服务器:
[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(loop=loop) app.router.add_route('GET', '/', index) sockjs.add_endpoint(app, prefix='/sockjs', handler=chatSession) handler = app.make_handler() srv = loop.run_until_complete( loop.create_server(handler, '127.0.0.1', 8080)) print("Server started at http://127.0.0.1:8080") try: loop.run_forever() except KeyboardInterrupt: srv.close() loop.run_until_complete(handler.finish_connections())
客户端代码:
<script src="//cdn.jsdelivr.net/sockjs/0.3.4/sockjs.min.js"></script> <script> var sock = new SockJS('http://localhost:8080/sockjs'); sock.onopen = function() { console.log('open'); }; sock.onmessage = function(obj) { console.log(obj); }; sock.onclose = function() { console.log('close'); }; </script>
支持的传输
- websockethybi-10
- xhr-streaming
- xhr-polling
- iframe-xhr-polling
- iframe事件源(EventSource用于iframe via postMessage)
- iframe htmlfile(HtmlFile 通过postmessage从iframe使用。
- jsonp-polling
要求
- Python3.4
- Gunicorn 19.2.0
- aiohttphttps://github.com/aio-libs/aiohttp
许可证
Sockjs是在Apache2许可下提供的。
变化
0.9.1(2018-12-04)
- 小代码样式清理
0.9.0(2018-10-11)
- 支持Python3.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
- 删除“原点”标题12的复选框
- 处理帧消息blob消息类型12
0.4(2016-02-04)
- 修正了sockjs.transports.websocket.websockettransport中的丢失事件循环参数
- 修正了sockjs.transports.rawwebsocket.rawwebsockettransport中的丢失事件循环参数
- 修复了rawrequestMessage。添加raw_header参数(aiohttp 0.21+)
- 修复了许多警告
- 修正了sockjs.route添加没有名称错误的端点
0.3(2015-08-07)
- 修复了SessionManager.aquire()-的调用,删除了不必要的第二个参数。
- 修正了一次cors_headers()调用中的错误参数。
- 修正了许多错误。代码并不完美,但至少它能正常工作。
0.2(2015-07-07)
- 固定包装
0.1.0(2015-06-21)
- 初始版本