Socket.IO – 如何离线处理Node.js

一切工作良好与不同的浏览器连接到相同的端口聊天了,但是当我用Ctrl + Cclosures我的节点服务器,我在我的浏览器中得到以下错误:

GET http://my-url net::ERR_CONNECTION_REFUSED 

我已经尝试了以下客户端callback:

 socket.on('reconnect_attempt' ... socket.on('message' ... 

但是他们没有触发,所以我做了一个肮脏的黑客工作, 使用计时器每秒检查一次套接字,如果节点服务器发生故障,则重新进行一次redirect:

 setInterval(function(){ if (socket.disconnected) window.open("http://otherurl","_self"); }, 1000); 

有没有更好的方法来检测节点服务器是否使用客户端js代码离线?

按照这个其他SO问题如何检测socket.io上的断开连接?

下面是复制的快速参考:

socket.io有一个断开事件,把它放在你的连接块中:

 socket.on('disconnect', function () { //do stuff }); 

我find了! 你只需要听错误事件(socket.io 0.9)

 socket.on('error', function() { // handle server error here console.log('Error net::ERR_CONNECTION_REFUSED occured. Handle me'); }); 

这个事件没有logging在socket.io客户端0.9文档中,这很奇怪