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