Node.js + socket.IO套接字未重新连接



我知道socket。io有一个内置的功能来重新连接和所有的东西,但我不认为它是工作-正如我从其他人那里看到的,它也不适合他们。

如果用户让他们的电脑进入睡眠状态,它会断开连接,然后当他们重新打开电脑时,他们不再连接,所以他们不会收到任何通知或任何东西,直到他们刷新页面。也许是我做错了什么?

var io = require('socket.io').listen(8080);
var users = {};
////////////////USER CONNECTED/////
console.log("Sever is now running");
io.sockets.on('connection', function (socket) { 
    //Tell the client that they are connected
    socket.emit('connected');
    //Once the users session is recieved
    socket.on('session', function (session) {
        //Add users to users variable
        users[socket.id] = {userID:session, socketID:socket};
        //When user disconnects
        socket.on('disconnect', function () { 
        //socket.socket.connect();
             var count= 0;
            for(var key in users){
                if(users[key].userID==session)++count;
                if(count== 2) break;
            }
            if(count== 1){
               socket.broadcast.emit('disconnect', { data : session});
            }
            //Remove users session id from users variable
            delete users[socket.id];
        }); 

        socket.on('error', function (err) {
            //socket.socket.connect();
        });

socket.emit("connection")需要在用户重新连接时调用,或者至少需要调用该事件中发生的事件。

socket.socket.connect();也不工作,它返回一个错误,并关闭套接字服务器,错误为"connect doesn't exist"

这个问题与io有关。连接params .

查看以下客户端代码(它将尝试永远重新连接,尝试之间的最大延迟为3秒):

 ioParams = {'reconnection limit': 3000, 'max reconnection attempts': Number.MAX_VALUE, 'connect timeout':7000}
 socketAddress = null
 socket = io.connect(socketAddress, ioParams)

有两个重要的参数,与你的问题有关:

  • reconnection limit -限制重新连接尝试之间的最大延迟时间。通常情况下,在服务器中断的时候,它会变得越来越大
  • 最大重新连接尝试次数-您想尝试多少次。默认值是10。在大多数情况下,这就是为什么客户端停止尝试的问题。

相关内容

  • 没有找到相关文章

最新更新