你将如何在 django 中实现聊天?
Posted
技术标签:
【中文标题】你将如何在 django 中实现聊天?【英文标题】:How would you go about implementing chat in django? 【发布时间】:2011-04-28 05:00:36 【问题描述】:如果你要在 Django 中实现聊天(即实时文本对话),你会怎么做?
我对此的看法(请对菜鸟有所怜悯)- 创建一个用于存储归档消息的表和一个用于存储当前消息的表。 并通过使用 javascript 每 20 秒查询一次当前消息表来填充当前聊天。但这感觉太不对劲了。 一定有更好的方法。我听说过一种叫做推送技术的东西。如何在 django 中使用它? 附言我的网站正在共享托管在 dreamhost 上。
【问题讨论】:
【参考方案1】:大多数网络聊天应用程序都倾向于使用 Comet Programming。 Comet 并不是真正的推动技术,而更像是对它的一种模拟。首先,comet 有不同的实现,但通常使用 pooling 和 ajax 来反复检查服务器以查看是否有消息。 Comet 通常会导致往返次数过多,因此已采取措施寻找更合适的替代方案,例如简单地保持连接打开的 Bosh。这实际上可以被认为是真正的推动而不是彗星。下面的 wiki 链接列出了替代方案,但总的来说,我认为 Comet 和 Bosh 是最常用的聊天方法。你甚至可以同时使用这两种方法。这里有一些链接。
Django powered AJAX Chat Django and Comet Comet (programming)【讨论】:
【参考方案2】:如果你主要关心前端,看看彗星。
至于后端,您有很多不同的选择。更直接的方法是将每个聊天消息存储在给定聊天室的数据库中。聊天室表格和聊天消息之间可能是多对多关系。
其他解决方案包括未内置于 Django 的键值存储数据库。您可以将消息推送到 redis 集中,或将活动聊天室数据存储在 memcached 中。
由于这是在dreamhost 上,我会查看数据库选项。事实是,您必须在每条聊天消息中存储一些数据。谁制作了它,它是什么时候制作的,等等。这必须在您的环境中的某个时间点进入表格。试着让它工作,然后看看你能不能让它更快。
【讨论】:
赞成“让它工作,然后看看你能不能让它更快。”以上是关于你将如何在 django 中实现聊天?的主要内容,如果未能解决你的问题,请参考以下文章
如何在使用 facebook-ios-sdk 的应用中实现聊天