我现在正在制作一个django网站,我希望实现像facebook或SE上的实时通知功能。
我做了一些研究,看起来虽然有两种选择:ajax长轮询和websockets,后者是要走的路。
然而,正如你所知,对于websocket的插件'socket.io'原来是一个node.js插件而django端口似乎只支持python 2而且该项目似乎已经死了。我使用python 2.7作为我的项目解释器,但我希望将来自己证明,如果我稍后升级到python3,我发现自己无法使用此功能。
所以我的问题是: 是否有直接的和未来的方法来实现websocket,用于在django env中发送实时通知和聊天?
答案 0 :(得分:12)
Django本身是以阻塞方式构建的,即使用同步方法。所以,你不能使用django app打开持久websocket,因为它会阻止整个django线程。
如果您想在django项目环境中启用通知/聊天,我建议使用centrifuge。它是用python编写的,但使用了异步(非阻塞)框架:tornado。
但是,你甚至不需要知道它是如何工作的,因为它提供了简单的REST API来与它进行通信。
简化工作流程,请查看docs了解详情:
centrifuge
,与django项目一样(或在另一台服务器上,但它们之间的延迟较低)我已经尝试过了,它有效!
答案 1 :(得分:0)
Django没有提供你想要的开箱即用的东西。您必须使用第三方库。跨框架工作的是Pusher。
答案 2 :(得分:0)
我认为你必须选择Firebase它会给你很棒的同步以及你如何在前端使用聊天,所以它不需要对django环境做任何事情,所以你可以在回调中异步更新你的后端与firbase。使用AngularJS的firebase也为你提供了非常棒的三向绑定。