你会如何在django中实现聊天?

时间:2011-04-28 05:00:37

标签: ajax django chat server-push

如果你要在Django中实现聊天(即实时文本对话),你会怎么做呢?

我的想法(请怜悯菜鸟) -
创建一个用于存储存档消息的表和一个用于存储当前消息的表 并通过使用javascript每20秒查询当前消息表来填充当前聊天。但这感觉错了。
 一定有更好的方法。我听说过一种叫推技术的东西。我如何与django一起使用?
附:我的网站正在dreamhost上托管。

2 个答案:

答案 0 :(得分:3)

大多数网络聊天应用程序倾向于使用Comet编程。 Comet不是真正的推动技术,而是更多的模拟技术。首先是彗星的不同实现,但通常使用pooling和ajax来反复检查服务器以查看是否有消息。彗星通常导致往返太多,因此已经采取措施寻找更合适的替代方案,例如波什,它只是保持连接打开。与Comet相反,这实际上可以被视为真正的推动。下面的wiki链接列出了备选方案,但总的来说我认为Comet和Bosh是聊天最常用的方法。您甚至可以将两种方法结合使用。这是一些链接。

答案 1 :(得分:1)

如果你主要关注的是前端,请查看彗星。

至于后端,你有很多不同的选择。更简单的方法是将每个聊天消息存储在给定聊天室的数据库中。聊天室表和聊天消息之间可能存在多对多关系。

其他解决方案包括未内置于Django中的键值存储数据库。您可以将消息推送到redis集,或将活动的聊天室数据存储在memcached中。

由于这是在dreamhost上,我会查看数据库选项。事实是,您必须在每条聊天消息中存储一些数据。谁创造了它,它的制作时间等等。这将在您的环境中的某个时刻进入表格。尝试让它工作,然后看看你是否可以加快它。