如何在Django视图之间实现消息传递?

时间:2012-12-20 15:47:07

标签: python django messaging

背景:我正在尝试构建一个调查应用,用户可以在其中添加调查答案并将这些答案推送给其他用户(例如,如果问题是“您最喜欢的编程语言是什么” ?“我没有包含Haskell,用户可以添加”Haskell“作为答案,它将显示在每个人的浏览器上)。我打算用长轮询来达到这个目的。

我的概念方法:我已经确定的方法是设置类似于观察者模式的东西(或者它可能与观察者模式完全相同。我是设计模式的新手)。

步骤将是这样的:浏览器向/ app / longpoll发出请求,该请求会旋转一个视图,其中1.使用时间戳检查是否发生了任何更改,如果是,则返回这些更改,或者2使用事件委托者注册自己并等待消息。然后,当浏览器向/ app / UpdateSurvey发出请求时,会触发一个视图,其中1.更新调查,并且2.通知事件委托人调查已更改。

我的问题:鉴于这是解决此问题的理智方法,我该如何实现?看起来我需要一个常规流程作为事件委托人,但我真的不确定这是什么样的。如何找到这个注册过程?我如何注册?如何让这个过程首先存在?如果此过程忙于在将答案添加到投票时委派事件,会发生什么?

我认识到这需要一个很长的答案,并且可能已被其他人解决,因此也鼓励文章/书籍推荐。

1 个答案:

答案 0 :(得分:1)

这是一个与您要求的解决方案不同的解决方案,但是当添加新问题时使用post_save信号如何使用websockets推送给打开页面的任何用户(订阅客户端) ?

编辑:啊,IE - 使用Juggernaut代替websockets(如果浏览器支持它们仍然会使用websockets),适用于IE6(我认为)和7(我知道) )