Django 1.10和Python 3中的Socket.IO

10
我正在尝试寻找一些与我的项目相匹配的 "django-socketio" 存储库。 我正在使用django 1.10和python3。尽管我已经进行了搜索,但我并没有发现可以在python3中运行的有效示例。

我的不太好的解决方案

  • 我开始一个node项目并将socket.io放置在路由内
  • 在我的django视图中,我使用我的django会话将返回的数据发送到node路由
  • 我在node中管理来自django的会话,并在路由内发出到客户端。

这个方法可行,但我不认为这是一个好的解决方案...是否有其他想法?或者具有python3和socketio的有效示例吗?

谢谢!


3
当有 django-channels 的情况下,为什么要使用 django-socketio - Aamir Rind
您可以查看 https://flask-socketio.readthedocs.io/en/latest/。 - Agam Banga
2个回答

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/。许多使用gevent实现Django的异步性的实现已经过时、实验性或被放弃,我发现了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,以异步地从Node.js加载后端数据(REST django API的性质始终是同步的),这可能是你最好的选择。

但我只想要一个管理器来控制我的node服务器中的django会话。我不需要官方项目,只需要新的项目一起工作来完成这个。也许我需要像Agam Banga说的那样使用Flask。 - GIA
1
如果你想让Django管理带有Django会话的socketio会话,答案就像我告诉你的那样。如果你愿意改用Flask代替Django,那么flask-socketio可能是一个解决方案,但它与你最初标记为Django框架的原始问题几乎没有任何关系,Django和Flask是非常不同的框架,因此它们之间的会话管理是不同的问题。如果你的优先级是在保持Python作为后端的同时拥有socketio作为实时协议,那么选择Flask是一个有效的解决方案(尽管它基于gevent,你应该单独学习)。 - danius

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接