Django refresh page if change data by other user

隐身守侯 提交于 2019-12-08 02:03:17

问题


I have a test django app.

In one page the test show the same question to all users.

I'd like that when a user answers correctly, send a signal to other active user's browser to refresh to the next question.

I have been learning about signals in django I learning work with them but I don't now how send the "refresh signal" to client browser.

I think that it can do with a javascript code that check if a certain value (actual question) change and if change reload the page but I don't know this language and the information that I find was confused.

Can anybody help me?

Many Thanks.


回答1:


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);



回答2:


That is not at all what signals in Django are for. Signals in django are server side hooks that allow you perform tasks on the server when a certain even happens.

To 'send a refresh' to the browser, you need to use a server-push approach such as Comet. Alternatively you can get your clients to periodically poll the server to look for update.

Here's some links:

How to implement Server push / long polling / comet using PHP and Javascript

How do I implement basic "Long Polling"?




回答3:


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



来源:https://stackoverflow.com/questions/8106230/django-refresh-page-if-change-data-by-other-user

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!