django实时协作网站

时间:2013-08-20 20:25:48

标签: python django web collaborative

我的问题是关于django支持的网站中用户之间的实时协作。

在实践中,我需要知道的是,是否可以实现这样的系统: 1)假设使用该网站的所有用户都是user1,user2,... userN 2)每次其中一个用户做一些有趣的事情通知服务器和其他用户以便更新  应用程序状态和浏览器ui 3)前一点可以扩展到不仅包括用户触发的事件,还包括其他更常见的事件,如超时,或“每5分钟”或你能想象到的。

我知道浏览器到服务器和服务器到浏览器的通信可以通过ajax(或者像web-socket或SSE这样的新东西)来完成,但是对我来说模糊不清的部分是如何 发生特定事件时通知用户。 想到的唯一(坏)想法是将应用程序数据存储到数据库并在用户执行某些操作时更新它,同时让所有用户从db轮询应用程序状态。但我知道是否有办法避免使用 数据库和轮询系统,换言之,如:

当事件e被触发时

=>发送到所有浏览器“e触发”

提前致谢

我会尝试更好地解释我的问题:我想知道当另一个用户“John”做某事时,如何向用户“Frank”发送回复。问题不在于服务器如何向浏览器发送内容,而是如何在不使用数据库的情况下将john的活动(即单击按钮,更改页面,填写表单)链接到Frank的ui。例如,考虑一个简单的聊天页面,当用户键入内容时,必须将键入的文本推送给所有其他用户:在这种情况下,我不知道如何将操作“John typed something”与动作“发送键入的文本”相关联弗兰克的浏览器“。 memcache解决方案听起来不错,但我想知道是否还有其他类似pub-sub或event系统的东西可用于链接不同用户的连接。

1 个答案:

答案 0 :(得分:0)

实现缓存(即memcache)以避免在Ajax调用检查更改时访问数据库。如果您想获得想象力,请查看key-based cache expiration以处理缓存失效。