繁体   English   中英

在Django项目中使用Web套接字的最佳方法是什么?

[英]What is the best approach to use Web Sockets with Django projects?

我开始研究一个需要套接字的新Django项目。 我搜索了互联网,发现了这个教程。 那里还有很多过时的东西。

任何人都可以推荐使用Django套接字的最佳方法吗? 我正在使用Django 1.7。 谢谢。

django基本上不支持Websockets,因为django基于不支持websockets的WSGI。 我最好的建议是使用像龙卷风这样的东西,你需要的是websockets。 您应该能够访问龙卷风中的所有模型(如果您愿意,也可以使用django模板系统)您只是会错过django url系统,因为龙卷风有它自己的。

你给出的建议也会起作用,但它们都是基于Socket.IO,这是javascript。 如果你对服务器端的javascript感到满意(你在客户端上没有太多的选择),那么任何一个都可以。 如果你想要python,请看看龙卷风。

嗯,这不是一个简短的话题。

Django是阻塞框架,因此它不能以异步方式工作。 你需要像http://autobahn.ws这样的东西,它有websocket实现(在twisted或asyncio上运行,它取决于你正在使用的python版本)。

Authobahn将作为外部服务运行,您的客户将连接到它。 如果你需要将它与django连接,django可以将事件发布到websocket worker(例如通过HTTP或你喜欢的其他协议),然后websocket worker将你的事件发布给客户端。

我已成功使用gevent-websocket和django与socketio 您必须使用特殊的runserver_socketio命令来允许websocket连接。

请参阅Django Channels项目。

Channels是一个项目,使Django能够处理的不仅仅是普通的HTTP请求,包括WebSockets和HTTP2,以及在为缩略图或背景计算等事件发送响应后运行代码的能力。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM