【问题标题】:socket.io not reconnecting after a disconnect断开连接后socket.io没有重新连接
【发布时间】:2015-04-27 19:14:55
【问题描述】:

我正在开发一个 node.js 应用程序,使用 socket.io 在服务器和客户端之间进行通信。如果服务器遇到任何错误,我会向客户端发送一条错误消息,并关闭来自服务器和客户端的连接。但是,当客户端尝试重新连接时,它不再能够连接到服务器。我的代码

server.js

io.sockets.on('connection', function(socket) {

   /*Some code*/
   stream.on('error',function(errormsg){
        socket.emit('error',{txt: "Error!"});
        socket.disconnect();
   });
});

client.js

var server_name = "http://127.0.0.1:5000/";
var socket = io.connect(server_name);

socket.on('error',function(data){
   console.log(data.txt);
   socket.disconnect();
});

function submitclick()
{
  var text="hello";
  if(socket.connected ==false)
    socket= io.connect({'forceNew': true});
  console.log(socket.connected);
}

socket.connected 的状态为假。我也没有在服务器端收到它。

【问题讨论】:

    标签: javascript node.js socket.io


    【解决方案1】:

    我不认为您对io.conncet 的调用是同步的,您太早地检查socket.connected。如果您想验证您的重新连接是否成功,请尝试如下:

    function submitclick()
    {
      var text="hello";
      if(socket.connected ==false) {
        socket= io.connect({'forceNew': true});
        socket.on('connect', function() {
          console.log('Connected!');
        });
      }
    }
    

    编辑: 正如@jfriend00 指出的那样,您可能不需要首先执行socket.disconnect(),因为socket.io 应该自动处理重新连接。

    【讨论】:

    • socket.io 的主要功能之一是它会为您自动重新连接。如果配置正确,我不明白为什么需要手动重新连接它。换句话说,正确配置的 socket.io 代码不应该在您的答案中包含该代码。建立一次连接,让 socket.io 为您处理重新连接。
    • @jfriend00 好建议
    猜你喜欢
    • 2013-11-21
    • 1970-01-01
    • 1970-01-01
    • 2012-10-12
    • 1970-01-01
    • 2021-04-12
    • 2018-01-28
    • 2018-01-01
    • 2011-05-24
    相关资源
    最近更新 更多