【问题标题】:socket.io client reconnect timeoutsocket.io 客户端重新连接超时
【发布时间】:2013-12-31 17:41:27
【问题描述】:

我正在使用带有 node.js 的 socket.io,我喜欢这个解决方案。我注意到的唯一问题是断开连接和重新连接。

这些是我当前的设置:

  'connect timeout': 1000,
  'reconnect': true,
  'reconnection delay': 300,
  'max reconnection attempts': 10000,
  'force new connection':true

我注意到,如果我停止并启动 node.js 进程,客户端会很好且快速地重新连接,但是如果服务器离线几分钟,客户端要么永远不会重新连接,要么需要很长时间(非用户友好)时间。

我想问一下我是否遗漏了什么或者可以添加到 socket.io 配置中以保持客户端轮询以重新连接。

我知道'重新连接延迟':

重连延迟默认为500ms

开始重新连接的初始超时,使用 每次新的重新连接尝试时的指数回退算法 已经制作好了。

但指数效应对用户不太友好。有没有办法每隔 X 时间段检查一次连接 - 例如:5 秒。

如果不是,我想我可以编写一些客户端 JS 来检查连接并在需要时尝试重新连接,但如果 socket.io 客户端提供这个就好了。

谢谢

【问题讨论】:

    标签: node.js socket.io


    【解决方案1】:

    编辑:请参阅下面的答案以了解正确的方法

    恐怕不能修改重连算法(截至2013年12月);允许此功能的Github issue 尚未合并。但是,其中一位评论者提出了一个小的解决方法,这应该可以抵消指数增长:

    socket.socket.reconnectionDelay /= 2reconnecting

    正如您所说,另一种方法是编写一些客户端代码来覆盖重新连接行为,并进行轮询。这是如何做到这一点的example

    编辑:上面的代码必须进入'disconnect'事件回调:

    var socket = io('http://localhost');
    socket.on('connect', function(){
      socket.on('disconnect', function(){
          socket.socket.reconnectionDelay /= 2;
      });
    });
    

    【讨论】:

    • 是否有关于上述解决方法在代码中的位置的任何信息?我假设是客户端,但代码在哪里?
    • 解决方法将进入您的“断开连接”事件处理程序。检查我的编辑
    【解决方案2】:

    这是我采用的解决方案 - 当套接字断开连接时,它会进入一个循环,每 3 秒尝试重新连接一次,直到创建连接 - 很有效:

      socket.on('disconnect', function() {
        socketConnectTimeInterval = setInterval(function () {
          socket.socket.reconnect();
          if(socket.socket.connected) {clearInterval(socketConnectTimeInterval);}
        }, 3000);
      });
    

    干杯

    【讨论】:

      【解决方案3】:

      有一个配置选项,reconnection limit(见Configuring Socket.IO):

      重连限制默认为Infinity

      • 以毫秒为单位的最大重新连接延迟,或无穷大。

      可以设置如下:

      io.set("reconnection limit", 5000);
      

      设置后,重新连接延迟将继续增加(根据指数退避算法),但仅达到您指定的最大值。

      【讨论】:

      • 这完全回答了问题,应该标记为正确答案。
      猜你喜欢
      • 2012-07-24
      • 1970-01-01
      • 2015-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-07
      • 2012-10-12
      相关资源
      最近更新 更多