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