我有一个浏览器,它使用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();
});
});
任何可能的原因以及如何解决这个问题?