2

テスト用のdjangoアプリがあります。

1つのページで、テストはすべてのユーザーに同じ質問を表示します。

ユーザーが正解したら、他のアクティブなユーザーのブラウザに信号を送信して、次の質問に更新してください。

私はdjangoでシグナルについて学んでいますが、彼らと一緒に仕事を学んでいますが、「リフレッシュシグナル」をクライアントブラウザーに送信する方法はわかりません。

特定の値(実際の質問)が変更されたかどうかをチェックし、変更された場合はページをリロードするjavascriptコードで実行できると思いますが、この言語がわからず、見つけた情報が混乱していました。

誰か助けてもらえますか?

どうもありがとう。

4

3 に答える 3

5

サーバーからブラウザにイベントを送信する既存の方法はありません。ただし、Webページがサーバーを定期的に(たとえば5秒ごとに)ポーリングするようにすることができます。

javascript/jqueryのコードは次のようになります

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

必要なのは、コメント(http://en.wikipedia.org/wiki/Comet_%28programming%29)とトルネード(http://www.tornadoweb.org/)です。

于 2011-11-12T17:49:42.987 に答える