我需要在django中建立一个推送系统,它的基本功能是将消息从服务器推送到浏览器。
由于nodejs不能使用,我更喜欢websocket或orbited,但我不知道如何在django中实现这两个。请给我推荐一个方法,这会对我有很大的帮助,谢谢。
发布于 2012-06-07 16:27:40
Django不擅长把东西“推”给客户。如果django是您唯一的选择,那么模拟推送的唯一方法就是通过长轮询。但这并不是很有效。相反,websockets是热门的。龙卷风和扭曲可以帮助你在这里。你的问题here也有一个更完整的答案。
发布于 2012-06-07 18:25:34
一种选择是使用与Django服务器并行运行的WebSocket服务器,该服务器具有REST/Push API,然后从Django通过简单的HTTP/Push到WebSocket服务器进行推送,然后再将消息传递给所有连接的WebSocket客户端。
通过这种方式,你不需要对现有的Django应用程序进行任何结构/技术上的改变,但却拥有一个可伸缩的、现代的基于WebSocket的推送功能。
对于上面提供的托管服务,我会看看http://pusher.com。
如果你更喜欢运行你自己的,我可以看看http://autobahn.ws,它被部署为一个随时可以运行的虚拟设备(VMware,VirtualBox,亚马逊EC2)。您可以在这里找到REST/API的工作示例https://github.com/tavendo/AutobahnPushPython
免责声明:我是Autobahn开源的作者,并为Tavendo工作,该公司提供Autobahn.ws (基于Autobahn OSS的商业产品)。
发布于 2015-01-21 22:26:03
websockets在Django中的另一个实现:https://github.com/jonashagstedt/swampdragon
来自文档: SwampDragon使用了Djangos出色的ORM,Tornados优秀的websocket支持(带回退。在IE7中测试),以及Redis的闪耀速度。
https://stackoverflow.com/questions/10927505
复制相似问题