私はサーバーからの最新情報に依存するWebアプリケーションを持っています。以前は、クライアントは前の完了後に1000ミリ秒のajaxリクエストを送信しました。それはうまくいったが、リソースを無駄にした。このアプリケーションは、クライアントがサポートしているときにWebSocketを使用するように変換されています(そうでないときはAjaxに劣化します)。ウェブソケットの接続を再確認する必要はありますか?
以前は、ブラウザが1秒ごとにアクティビティをリフレッシュしていたことを示すことによって、Ajaxはパルスを提供しました。今、それは死んでいるように見え、ただそこに座って働いています。私には次のようなものがあります:
function connect() {
$("#text1").text('Socket Status: '+socket.readyState+' (connecting)');
socket.onopen = function(){
$("#text1").text('Socket Status: '+socket.readyState+' (open)');
}
socket.onmessage = function(msg){ checkDATA(msg.data); }
socket.onclose = function(){
$("#text1").text('Socket Status: '+socket.readyState+' (close)');
setTimeout(function() { connect(); },500);
}
socket.onerror = function(){
$("#text1").text('Socket Status: '+socket.readyState+' (error) '+msg.data);
}
}
私には状態の兆候がありますが、脈を示すものはありません。私はちょうどパルスを偽るべきか、または接続が機能していることを保証するために/できなければならない何か別のものがありますか?
私は何のエラーを監視していませんか?私はこの関数を 'try {} catch {}'にラップして、サーバがリブートしたときに発砲します。 'Catch'は5秒間待って再接続を試みます。エラーが発生するたびにサーバーとの接続数を倍増させていたため、再接続を「onerror」から削除しました。ブラウザが接続状態を変える理由/方法を理解していれば、接続のテストは避けられます。 – shaun5