0

Google アプリ エンジン サーバーで長いポーリング メカニズムを使用してチャット アプリケーションを構築しようとしています。HTTPRequest のデフォルト タイムアウトは 30 秒なので、サーバーからの更新がない場合は 28 秒ごとにポーリング リクエストをサーバーに送信します (他のクライアントからのメッセージを見逃さないようにするため)。最初のリクエストは登録されますが、28 秒後に送信された 2 番目のリクエストはサーバーに到達しません。

function loadPage(query){
$.get({ url: query, success: function(events){
   updated = 1;
   //events data processing
   createServerChannel();
     });
}

  function createServerChannel(){
      var query='/ChatController?&user='+userName+'&sessionName='+sessionName+'&register=true';
      loadPage(query);
      updated = 0;
      setInterval(function() { poll(query); }, 28000);
   };

   function poll(query){
       if(updated==0){
          loadPage(query);
       }
   }

サーバーで待機するリクエストに thread.wait() を使用しています。同じクライアントからの次のリクエストが利用可能になったときに、最初の保留中のリクエストを消費する方法はありますか? 助けてください。

4

1 に答える 1

0

サーバーへの継続的な接続を開いたままにし、サーバーがクライアントにデータをプッシュするのを待つため、Webソケットの方が良いアプローチかもしれないと思います。

http://www.html5rocks.com/en/tutorials/websockets/basics/

于 2012-07-28T18:22:38.357 に答える