2

我有一个测试 django 应用程序。

在一个页面中,测试向所有用户显示相同的问题。

我希望当用户正确回答时,向其他活动用户的浏览器发送信号以刷新到下一个问题。

我一直在学习 django 中的信号,我学习与它们一起工作,但我现在不知道如何将“刷新信号”发送到客户端浏览器。

我认为它可以使用 javascript 代码来检查某个值(实际问题)是否更改以及更改是否重新加载页面,但我不知道这种语言并且我发现的信息很混乱。

有谁能够帮我?

非常感谢。

4

3 回答 3

5

There is no existing way to send a event from server to browser. But you can get your web page polling your server periodically (say every 5 seconds).

The code in javascript/jquery could be like the following

setInterval(function(){
    $.post("your_ajax_handler_url/is_answerd", userId, function(xhr){
       if(xhr.responseText == "answered"){
          location.reload(true);
       }  
    }
 }, 5000);
于 2011-11-12T17:47:09.617 回答
3

这根本不是 Django 中的信号的用途。django 中的信号是服务器端钩子,允许您在某些事件发生时在服务器上执行任务。

要向浏览器“发送刷新”,您需要使用服务器推送方法,例如Comet。或者,您可以让您的客户定期轮询服务器以查找更新。

这里有一些链接:

如何使用 PHP 和 Javascript 实现服务器推送/长轮询/彗星

如何实现基本的“长轮询”?

于 2011-11-12T17:40:29.103 回答
-1

What you need are coment(http://en.wikipedia.org/wiki/Comet_%28programming%29) and tornado(http://www.tornadoweb.org/)

于 2011-11-12T17:49:42.987 回答