サーバーがクライアント側のロングポーリングをサポートしているとします。次に、クライアント側のコードは次のようになります。
var polling = function() {
$.ajax({
url: "/polling"
}).done(function(data) {
// polling again
polling();
// process the pushed data
...
});
}
polling();
これは、クライアントが継続的に「/polling」にポーリングしているときに、クライアントに何かをプッシュしたいときに機能するはずです。
ただし、クライアントがプッシュされたデータを受信してから次のポーリングがサーバーに到達するまでの間に「時間のギャップ」があることに気付くかもしれません。この「タイム ギャップ」のデータは失われます。
この問題を回避するためのサーバー側の回避策がいくつかあります。しかし、クライアント側に回避策があるかどうか知りたいですか? * クライアントは長いポーリング要求を常に接続したままにできますか? Gmail はこのようなトリックを行うべきだと思います。gtalk でチャットしていますが、「/bind」リクエストの割り込みが表示されません。* 転送中に ajax は不完全なデータを受け取るべきですか? その後、接続は永久に接続できます。* websocket は動作しますか? もしそうなら、HTML5なしで何ができますか?