我想創建套接字的IO服務器的客戶端,其中x和x秒嘗試做出插座的IO服務器的連接,以驗證是服務器已經啓動。的NodeJS - 插座IO - 客戶端系統自動重新連接
我在客戶端什麼:
SRC = 「HTTP://本地主機:90/socket.io/socket.io.js」 - 負載腳本
var serverStatus = recconectToServer();
setInterval(function(){
if (serverStatus) {
$(".results-server").append("<p style='color:green; width:100%; float:left;'>connection up.</p>");
} else {
recconectToServer();
}
},3000);
function recconectToServer() {
$(".results-server").append("<p style='color:orange; width:100%; float:left;'>try connection.</p>");
try {
var socket = new io.connect("http://localhost:90");
return true;
} catch(err) {
$(".results-server").append("<p style='color:red; width:100%; float:left;'>server down.</p>");
console.log(" Erro = "+ err);
return false;
}
}
情況:
如果客戶試圖連接時,服務器關閉我收到此消息: 「的ReferenceError:IO沒有定義」
這是正常的,因爲服務器關閉,然後我啓動服務器和客戶端嘗試進行連接(無需刷新頁面)後繼續收到此消息「的ReferenceError:IO沒有定義」
但爲什麼出現這種情況?
注:如果我執行刷新客戶端頁面,服務器運行時,客戶端連接沒有任何問題。
更新: 真正的問題:從sockets.io不工作connected_failed,與其他人一樣的問題存在於計算器的事件。因此,對於解決這個我做了一個解決方案:
我的解決辦法:
<script src="http://localhost:90/socket.io/socket.io.js"></script>
<script>
/**
* timer that try make a new connection to node server
*/
setInterval(function(){
if (autoReconnect()) {
window.location.href="client.html";
} else {
autoReconnect();
}
},5000);
/**
* This functions try make connection to node server
*/
function autoReconnect(){
try {
$.getScript("http://localhost:90/socket.io/socket.io.js");
var socket = new io.connect('http://localhost:90');
return true;
} catch(err) {
return false;
}
}
</script>
結論: 當服務器再次成爲了起來,會重定向到其他頁面,在這裏繼續的初始過程。
我不知道這是不是最好的解決辦法,如果有人有一個更好的,請告訴我。
carlptr,就像你說的是邏輯,但要獲得我需要用的sockets.io.js來自jquery的getScript。 $ .getScript( 「HTTP://本地主機:90/socket.io/socket.io.js」); – 2013-05-07 22:16:22