我正在聊天平台上工作。我要创建一个用户列表。
我尝试侦听“连接”或“断开连接”之类的事件以添加或删除用户,然后将列表发送到所有套接字。问题是服务器每次都不会检测到有人断开连接,因此该连接仍保留在列表中。 现在我尝试了其他方法。我仍然在听这两种消息,但是我没有保存列表然后删除它们,而是通过遍历所有套接字并尝试获取键“用户名”来刷新它。除了获得用户名的那一部分之外,其他一切都进行得很好。老实说我可能弄错了。
这是我第二个想法:
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
有人知道我的想法有解决办法吗? (为什么未检测到断开连接事件等)