如何在socket.io中configuration重新连接?

我用下面的代码创buildsocket.io连接

var socket = new io.connect('http://localhost:8181', { 'reconnect': true, 'reconnection delay': 500, 'max reconnection attempts': 50 }); 

但是当我杀死服务器CTRL + C并重新启动时,重新连接不会发生。 但在客户端引发断开事件。 这可能是什么原因?

这是一个老问题,但是对于像我这样的其他人来说,在socket.io(1.x)中configuration重新连接的方法是正确的:

 var socket = new io.connect('http://localhost:8181', { 'reconnection': true, 'reconnectionDelay': 1000, 'reconnectionDelayMax' : 5000, 'reconnectionAttempts': 5 }); 

我意识到这是一个老问题,但我一直有一些问题与套接字重新连接,并发现这个post在search结果高,所以认为我会贡献。 尝试使用以下代码准确debugging哪些事件触发:

 # coffeescript. compile if you're writing javascript, obviously. socket.on 'connect',-> console.log 'connected' socket.on 'reconnect',-> console.log 'reconnect' socket.on 'connecting',-> console.log 'connecting' socket.on 'reconnecting',-> console.log 'reconnecting' socket.on 'connect_failed',-> console.log 'connect failed' socket.on 'reconnect_failed',-> console.log 'reconnect failed' socket.on 'close',-> console.log 'close' socket.on 'disconnect',-> console.log 'disconnect' 

这应该会让您更深入地了解客户端套接字的状态。

此外,请尝试查看您的networking检查器的networking选项卡,看看它是否作为回退触发XHR请求。 最后,在您的Web控制台中,尝试inputio.sockets并将其展开,以查看是否实际尝试重新连接。

我遇到了reconnect_failed没有触发的问题,重新连接tally没有重置。 以下是在github上讨论这些问题的链接。

重新连接延迟 – 指数closures不正确重置

reconnect_failed获取永远不会被触发

一些潜在的修复/解决方法

这是一个老问题,但是在使用v1.4.5时,我有同样的问题(出于不同的原因)。 我的聊天室应用程序工作得很好,但是当我在terminal中Ctrl+C时,我的浏览器继续循环并每隔几秒报告一次ERR_CONNECTION_REFUSED,直到我closures它为止。

改变以前的答案只是给了我一个解决scheme。

对于v1.4.5,这里是我的客户端js文件中“var socket”的原始代码:

  var socket = io(); 

这里是解决scheme:

  var socket = io({ 'reconnection': true, 'reconnectionDelay': 1000, 'reconnectionDelayMax' : 5000, 'reconnectionAttempts': 5 }); 

显然,如果我愿意,我可以改变这些值,但重要的一点是,这会导致无止境的重新连接请求。

重新连接延迟太小,500ms增加,最多50次重试意味着500 * 50 = 25000ms,即25秒。 如果这不能在客户端设置错误事件超时来重新创build套接字对象(错误和一些延迟重试创build连接后)。