断开后拆下插座

remove socket after disconnect

本文关键字:插座 断开      更新时间:2023-09-26

执行socket.disconnect()后,我需要从服务器中删除套接字

users = {}
ids_disconnect = []
io.of('/example')
    .on('connection', function (socket) {
        var user_id = socket.decoded_token.user;

        if(users[user_id] === undefined){
            users[user_id] = {"socket": socket};
        } else {
            ids_disconnect.push(users[user_id].socket.id);
            users[user_id].socket.disconnect(true);
            users[user_id] = {"socket": socket};
        }
        console.log("User Connect: " + user_id + " SocketID: " + socket.id);

        //disconnect client
        socket.on('disconnect', function () {
            console.log('User Disconnect ' + user_id);
            if(ids_disconnect.indexOf(socket.id) != -1){
                console.log('Disconnect Force: ' + user_id );
                ids_disconnect.splice(ids_disconnect.indexOf(socket.id),1)
            } else {
                delete users[user_id];
            }
        });
    });

};

这是我的代码,但套接字无法从服务器上删除。

对不起我的英语

在触发disconnect事件之前,您必须先侦听它。

users = {}
ids_disconnect = []
io.of('/example')
  .on('connection', function(socket) {
    var user_id = socket.decoded_token.user;
    //disconnect client
    socket.on('disconnect', function() {
      console.log('User Disconnect ' + user_id);
      if (ids_disconnect.indexOf(socket.id) != -1) {
        console.log('Disconnect Force: ' + user_id);
        ids_disconnect.splice(ids_disconnect.indexOf(socket.id), 1)
      } else {
        delete users[user_id];
      }
    });
    if (users[user_id] === undefined) {
      users[user_id] = {
        "socket": socket
      };
    } else {
      ids_disconnect.push(users[user_id].socket.id);
      users[user_id].socket.disconnect(true);
      users[user_id] = {
        "socket": socket
      };
    }
    console.log("User Connect: " + user_id + " SocketID: " + socket.id);
  });
};