如何创建一个套接字对象并从服务器获取它?

时间:2019-03-26 17:34:24

标签: javascript node.js socket.io

我正在聊天平台上工作。我要创建一个用户列表。

我尝试侦听“连接”或“断开连接”之类的事件以添加或删除用户,然后将列表发送到所有套接字。问题是服务器每次都不会检测到有人断开连接,因此该连接仍保留在列表中。 现在我尝试了其他方法。我仍然在听这两种消息,但是我没有保存列表然后删除它们,而是通过遍历所有套接字并尝试获取键“用户名”来刷新它。除了获得用户名的那一部分之外,其他一切都进行得很好。老实说我可能弄错了。

这是我第二个想法:

io.on('connection', function(socket){
    sessions = io.sockets.sockets
    users = []
    for(i=0; i<Object.values(sessions).length; i++){
        users.push(sessions[Object.keys(sessions)[i]].username) // ugly i know
    }
    io.emit('receive_users', users);
}

这是我设置用户名密钥的方法:

// insert 'username' and 'socket' declaration here
socket.username = username

有人知道我的想法有解决办法吗? (为什么未检测到断开连接事件等)

0 个答案:

没有答案