2

データを取得してクライアントに入力する Web サービスがあります。今のところ、ajax get を使用してクリックすると Web サービスからデータをフェッチするボタンがあります。私の Web サービスでは、データを追加、編集、または削除できるメンテナンスがあります。私がやりたいことは、データを追加、編集、または削除するたびに、クライアントが Web サービスからデータを自動的に取得するようにして、クライアントに正確なデータを表示することです。

これが私が考えていることです。私のWebサービスでは、データが更新されたかどうかをtrue/falseで伝えるjsonがあります(クライアントによってフェッチされます)。そのため、追加、編集、削除のたびにそれが true になり、クライアントがそのデータを取得するたびに false になります。

ここで、その json の変更 (true または false) をリッスンする javascript/jquery リスナーが必要です。そのリスナーを毎秒実行する必要がありますか? 出来ますか?

ありがとう。

編集:

私は自分の投稿を読み直していましたが、それは私を襲いました.1人のクライアントだけを念頭に置いて考えているだけです. Web サービスで追加、編集、削除するたびに「更新済み」が true になり、データの要求を受け取るたびに false に設定します。しかし、他のクライアントはどうですか?彼らがリクエストを送信したとき、それはすでに false であるため、更新されません。何か案は?ありがとう

4

2 に答える 2

4

これは、次の2つのアプローチを使用して実行できます。

  1. Webソケット; また
  2. setInterval関数。

setInterval()の例を次に示します。

// just a control var...
var gen = 1;

// call the function repeatedly in 5 seconds of interval
// this call returns an id that can be used to stop the calls
var id = setInterval(function(){

    // function body...

    alert( "making an ajax request...(" + gen + ")" ); // here you call your webservice
    gen++;

    // just want to stop it, but you wont need this.
    if ( gen == 10 ) {
        clearInterval( id );
    }

}, 5000 ); // 5000 miliseconds == 5 seconds

いくつかのリンク:

于 2012-07-22T03:14:18.067 に答える
0

サーバーのポーリングとcometリクエストの使用の2つのHTTPオプションがあります。ポーリングしている場合は、最後に更新された時刻をリクエストに含めて、サーバーがその時刻より古いイベントをフィルタリングできるようにする方がよい場合があります。そうすれば、すべてのクライアントのすべてのイベントに追加のフラグを保存する必要はありません。

于 2012-07-22T03:15:02.727 に答える