使用Python 3的Django 1.10和Socket.IO

Gui*_* IA 10 python sockets django node.js socket.io

我正在尝试在我的项目中找到一些"django-socketio"仓库.我使用django 1.10和python3.我真的搜索过,但我没有找到python3的工作示例.

我糟糕的解决方法

  • 我启动了node项目并将socket.io放在路由中
  • 在我的django视图中,我使用我的django会话将返回的数据发送到节点路由
  • 我在我的节点内管理来自django的会话,并向客户端发出内部路由.

这项工作,但我不敢相信这是一个很好的解决方案..任何人有其他想法?或者使用python3和socketio的工作示例?

谢谢!

dan*_*ius 8

如果你想使用Websockets和Django,你应该考虑https://github.com/django/channels.Python中的替代方案是使用python tornado http://www.tornadoweb.org/en/stable/或aiohttp(Python3.4 +)http://aiohttp.readthedocs.io/en/stable/.Django 通过gevent 实现异步的许多实现都是过时的,实验性的或遗弃的,我发现这个https://github.com/jrief/django-websocket-redis但是它使用Redis所以没有理由不回到django-channels.

在我看来,由于Socket.io是一个基于Websockets的层,你将找不到任何完全支持Socket.io规范作为Python中的ws服务器的项目,因为它是一个本地Node.js,没有正式移植到Python项目,至少你可能正在使用的最新版本,如果你真的需要Socket.io功能坚持Node.js并在Django中创建一个简单的REST API来从Nodejs异步加载后端数据(REST django API本质上总是同步的),这是你可能拥有的最佳镜头.