3

Javaサーブレットで5秒ごとに受信されるデータの一定のストリームがあるWebアプリケーションを開発しています(別のアプリケーションによって書き込まれたファイルから読み取られます)。このデータを html ページにプッシュし、javascript で読み取って、d3 ライブラリでグラフ化できるようにしたいと考えています。

現時点では、サーブレットの「doGet」関数を 5 秒ごとに呼び出す JavaScript 関数を使用しています。これが多くのオーバーヘッドを生み出しているか、より効率的に実行できるのではないかと心配しています。「response.setIntHeader("Refresh", 5);」を実行することも可能です。サーブレットから。

他に良い方法はありますか?

助けてくれてありがとう!

4

1 に答える 1

0

ショートポーリングは、現在、おそらくあなたが説明した問題を解決するための最も一般的なアプローチです

通知の数秒の遅れに対処できる場合、短いポーリングは非常に簡単です。基本的な例を次に示します。

ページの読み込み時に、JS でこれを呼び出します。

setInterval(checkFor, 30000);

上記は、関数 checkFor() を 30 秒ごとに呼び出します (明らかに、30 秒を任意の長さに変更できます。ユーザーを更新する頻度に応じて、上記の行の 30000 を調整するだけです)。

次に、checkForNotifications 関数で、サーバーに ajax 呼び出しを行い、更新があるかどうかを尋ねます。サーバーが「はい」と答えた場合は、JS を使用してアラートを表示します。何もしない:

   function checkFor(){
    $.ajax({
    url: "your/server/url", 
    type: "POST",
    success: function( notification ) {
        //Check if any notifications are returned - if so then display alert
    },
    error: function(data){
        //handle any error 
      }
   });
 }
于 2014-05-03T09:40:46.447 に答える