0

サーバーがクライアント側のロングポーリングをサポートしているとします。次に、クライアント側のコードは次のようになります。

var polling = function() {
    $.ajax({
        url: "/polling"
    }).done(function(data) {
        // polling again
        polling();
        // process the pushed data
        ...
    });
}
polling();

これは、クライアントが継続的に「/polling」にポーリングしているときに、クライアントに何かをプッシュしたいときに機能するはずです。

ただし、クライアントがプッシュされたデータを受信して​​から次のポーリングがサーバーに到達するまでの間に「時間のギャップ」があることに気付くかもしれません。この「タイム ギャップ」のデータは失われます。

この問題を回避するためのサーバー側の回避策がいくつかあります。しかし、クライアント側に回避策があるかどうか知りたいですか? * クライアントは長いポーリング要求を常に接続したままにできますか? Gmail はこのようなトリックを行うべきだと思います。gtalk でチャットしていますが、「/bind」リクエストの割り込みが表示されません。* 転送中に ajax は不完全なデータを受け取るべきですか? その後、接続は永久に接続できます。* websocket は動作しますか? もしそうなら、HTML5なしで何ができますか?

4

1 に答える 1

1

プッシャーのようなものを検討することをお勧めします。そのようなものを扱うときは、あなたの生活がはるかに楽になります(これらはすべて、これらすべてを素敵なパッケージで処理するためのライブラリを提供するためです)。

于 2013-01-28T18:12:58.030 に答える