我想创建套接字的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