我有一個Web應用程序,它依賴於來自服務器的更新信息。過去,客戶端會在完成前1000ms後發送ajax請求。它運作良好,但浪費資源。當客戶端支持該應用程序時,該應用程序已轉換爲使用websocket(如果不支持,則會降級爲Ajax)。是否需要重申websocket連接?
在過去,通過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);
}
}
所以我有狀態的一些指示,但沒有顯示的脈衝。我應該僞造一個脈衝,還是有一些不同的/更好的,可以/應該做的,以確保連接工作?
什麼錯誤(S)我不能監控?我將這個函數封裝在'try {} catch {}'中,當服務器重新啓動時引發火災。 'Catch'等待5秒鐘並嘗試重新連接。我刪除了重新連接'onerror',因爲每次出現錯誤時,我都將服務器的連接數加倍。如果我明白瀏覽器爲什麼/如何更改連接狀態,測試連接似乎是可以避免的。 – shaun5 2012-03-18 03:36:04