Javascript SocketIO在重新连接后创建多个连接

Javascript SocketIO在重新连接后创建多个连接,javascript,node.js,socket.io,network-programming,client-server,Javascript,Node.js,Socket.io,Network Programming,Client Server,我正在从事一个NodeJS客户机-服务器项目,其中客户机是BeagleBoneBlack。我使用SocketIO向服务器发送BBB读数 当我从服务器上拔下LAN电缆时,客户机和服务器知道连接已断开。当我插回插头时,会出现问题;在重新连接时,客户端将再次连接,但服务器连接事件处理程序将触发两次。一段时间后,服务器会触发断开连接,但客户端仍处于连接状态。出于某种原因,程序会生成两个套接字,当它知道其中一个是假的时,就会断开连接 我发现这个问题的解决方案是在连接回调之外放置一个事件处理程序寄存器,所以

我正在从事一个NodeJS客户机-服务器项目,其中客户机是BeagleBoneBlack。我使用
SocketIO
向服务器发送BBB读数

当我从服务器上拔下LAN电缆时,客户机和服务器知道连接已断开。当我插回插头时,会出现问题;在重新连接时,客户端将再次连接,但服务器连接事件处理程序将触发两次。一段时间后,服务器会触发断开连接,但客户端仍处于连接状态。出于某种原因,程序会生成两个套接字,当它知道其中一个是假的时,就会断开连接

我发现这个问题的解决方案是在连接回调之外放置一个事件处理程序寄存器,所以我为客户端做了这项工作。但我不知道是否有可能在服务器端实现,我也不知道如何实现这一点

客户端:

var socket = require('socket.io-client')('http://192.168.1.147:6400');
var isConnected = false;
var messageQueue = [];


socket.on('connect', function () { 
  isConnected = true;
  console.log("socket connected"); 
  socket.emit('some-event', data);
});

socket.on('connect_error', function() {
   isConnected = false;
   console.log('Failed to connect to server');
});

socket.on('disconnect', function() {
   isConnected = false;
   console.log("socket disconnected");
});
服务器端:

io.on('connection', function(socket){
    var address = socket.handshake.address;
    var idx = address.lastIndexOf(':');
    if (~idx && ~address.indexOf('.'))
        address = address.slice(idx + 1);
    console.log(address + " is connected");


    socket.on('disconnect', function () {
           console.log(address + " is disconnected");

    });

    socket.on('some-event', function (data) {
        //some code
    });

});

什么是“BBB读数”?BeagleBoneBlack读数…我有蓝牙加密狗,我在上面读取IBeacon数据…嘿,你能找出为什么会发生这种情况吗?aka为什么在连接回调中注册事件处理程序会导致这种情况?