socket.io/node.js检测服务器是否closures

有什么我可以做在客户端检测到socket.io websocket不可用? 有些东西是:

  • 服务器按照惯例启动
  • 客户连接
  • 消息在服务器和客户端之间来回发送
  • 服务器closures (不再可用)
  • 警告连接的客户端服务器不可用

我试图在客户端添加'错误'和'connect_failed'选项,但没有任何运气,那些根本没有触发。 任何人的想法,我怎么能做到这一点?

disconnect事件是你想听的。

 var socket = io.connect(); socket.on('connect', function () { alert('Socket is connected.'); }); socket.on('disconnect', function () { alert('Socket is disconnected.'); }); 

如果您希望能够检测到客户端无法连接到服务器,请尝试使用connect_error 。 这适用于socket.io-1.3.5.js。 我在https://stackoverflow.com/a/28893421/2262092find了这个。

这是我的代码片段:

 var socket = io.connect('http://<ip>:<port>', { reconnection: false }); socket.on('connect_error', function() { console.log('Failed to connect to server'); }); 

在我的开发过程中遇到了这个bug,并且发现我的事件调用每次重置服务器时都会翻倍,因为我的套接字重新连接。 原来我的解决scheme,这不是重复连接是这样的

var socket = io.connect();

socket.on('connect',function(){

console.log('User connected!');

});

socket.on('message',function(message){

的console.log(消息);

});

(通过KasperTidemann在https://github.com/socketio/socket.io/issues/430find&#xFF09;

原来,这是因为我把“消息”监听器放在“连接”函数中。 安置在听众之外,解决了这个问题。

无论你身在何处,都欢迎你去Kasper Tidemann。

继续!!