在socket.io,socket.disconnect()到单个套接字,断开所有套接字连接

时间:2017-08-31 12:37:25

标签: node.js socket.io socket.io-1.0 socket.io-redis socket.io-java-client

我有一个浏览器,它使用socket.io连接到服务器,传输仅作为websocket。

我使用简单的逻辑验证连接到我的服务器的所有套接字,并且工作正常。

更新-1

现在问题发生在互联网波动时,浏览器正在创建许多websocket连接。 (问题类似于https://github.com/socketio/socket.io/issues/430

因为应用程序需要每个浏览器一个连接,因此除了一个所有其他套接字被验证代码无效。但是,当我断开一个无效的套接字时,所有套接字都正在断开连接。

简化代码

const soredis = require('socket.io-redis');
const io = require('socket.io')(3000);

io.adapter(soredis({host: localhost, port: 6379}));

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

  setTimeout(function () {
    getSocket(socket.id, (err, res) => { //get data from redis
      if (err) { //If not found in redis
        socket.disconnect();
        return;
      }
    });
  }, 15000);


  socket.on('register', function(data, cb) {
    if (!data.key) {      
       return cb("Error");
    }
    saveSocket(socket.id); //save to redis
    return cb();  
  });

});

任何可能的原因以及如何解决这个问题?

0 个答案:

没有答案