停止socket.io重新连接

停止socket.io重新连接,socket.io,Socket.io,简单场景: 客户端使用socket.io(socket=io.connect(…))连接到服务器 服务器崩溃 客户端尝试重新连接 用户告诉客户端断开连接(socket.disconnect()) 服务器启动 客户端重新连接 似乎一旦socket.io开始尝试重新连接,就无法再停止。我希望第4步能阻止第6步的发生,但事实并非如此。我需要调用什么呢?我想你需要的是套接字。io客户端不重新连接已设置属性重新连接为假 我创建了一个小服务器(server.js)来测试这一点: var io = requi

简单场景:

  • 客户端使用socket.io(
    socket=io.connect(…)
    )连接到服务器
  • 服务器崩溃
  • 客户端尝试重新连接
  • 用户告诉客户端断开连接(
    socket.disconnect()
  • 服务器启动
  • 客户端重新连接

  • 似乎一旦socket.io开始尝试重新连接,就无法再停止。我希望第4步能阻止第6步的发生,但事实并非如此。我需要调用什么呢?

    我想你需要的是
    套接字。io
    客户端
    重新连接
    已设置属性
    重新连接

    我创建了一个小服务器(
    server.js
    )来测试这一点:

    var io = require('socket.io').listen(8888);
    
    io.sockets.on('connection', function (socket) {
      socket.emit('news', { hello: 'world' });
      socket.on('my other event', function (data) {
        console.log(data);
      });
    });
    
    然后我创建了这个
    test.js
    来测试它是否没有重新连接

    var client = require('socket.io-client'),
        socket = client.connect('http://localhost:8888', {
            'reconnect': false
        });
    
    socket.on('connect', function () {
        socket.on('news', function (data) {
            console.log(data);
            socket.emit('my other event', { my: 'data' });
        });
    });
    
    要使
    test.js
    正常工作,您需要从
    npm
    发布
    npm安装socket.io客户端
    或将
    socket.io客户端
    (dev-
    依赖项
    添加到
    包.json


    当我在运行
    test.js
    时停止
    server.js
    时,
    test.js
    将立即返回,我相信这是您想要的结果。当我将
    重新连接
    设置为
    true
    时,客户端将尝试重新连接到服务器,这不是所需的行为

    您可能希望自己处理重新连接

    // Disables the automatic reconnection
    var socket = io.connect('http://server.com', {
        reconnection: false
    });
    
    // Reconnects on disconnection
    socket.on('disconnect', function(){
        socket.connect(callback);
    });
    

    注意:旧版本使用了
    重新连接
    而不是
    重新连接

    在新的socket.io 1.1.x中,您可以执行以下操作:

    var manager = io.Manager('http://localhost:9823', { autoConnect: false });
    

    以下是。

    请尝试以下代码:

    self.socket?.manager?.reconnects = false
    

    您只需调用socket.disconnect(),它就会停止尝试重新连接。

    这对我来说非常好,不过,它在完全停止之前又尝试了一次

    socket.io客户端“:“2.2.0”


    此.socket.io.重新连接尝试(0);

    但我希望它重新连接-直到我明确告诉它断开连接,然后它应该停止尝试。好的。我认为你应该自己编写逻辑。它不应该那么难。我过去自己编写了一些类似的逻辑,将继续重试=>感谢你的努力!你是对的,没有那么难。仍然认为它是正确的但是,socket.io中有一个bug。;)似乎当前该选项已更改为“重新连接:false”感谢您提供此代码片段,它可能会提供一些有限的、即时的帮助。a通过说明为什么这是一个很好的问题解决方案,并将使其对将来有其他类似问题的读者更有用。请请回答添加一些解释,包括您所做的假设。该博客的链接无效。请在您的回答中添加一些解释,以便其他人可以从中学习