在使用网络套接字的聊天应用程序中,每当连接1个以上用户(例如{user1:tab1,user2:tab2,user2:tab3,...})时,在关闭tab1时,“在线用户”状态为其他选项卡(tab2,tab3,...)为空。
但是与此相反,即关闭除tab1以外的选项卡,通过实时更新“在线用户”状态,我的聊天应用程序可以正常工作在其他选项卡中。
我不确切知道我的代码的哪一部分出了问题,因此我提供了指向index.html和server.js的所有编码部分的链接
index.html
server.js
我正在使用nodejs版本10.15.0,快速版本6.7.0,socket.io版本6.7.0。
我希望这些信息会足够。
答案 0 :(得分:1)
我相信错误在这里:
users.splice(users.indexOf(socket.username))
array.splice(start [,deleteCount])
如果省略了deleteCount [...],则从头开始的所有元素 通过数组的末尾将被删除。
因此,当第一个用户断开连接时,请从阵列中删除他们和所有以下所有用户。
我的猜测是您应该这样写:
users.splice(users.indexOf(socket.username), 1)
一次仅删除一个用户。