【发布时间】:2014-10-14 06:53:52
【问题描述】:
我正在制作一个游戏,其中节点服务器使用socket.io 与 javascript 客户端对话。玩家可以连接和断开游戏,服务器会跟踪连接的人。但是,我发现很多时候当我关闭服务器,关闭所有打开的客户端选项卡,然后重新启动一个新的节点服务器时,连接的客户端数量似乎不正确。
例如,我将只连接一个客户端,但节点调试器显示服务器正在跟踪三个套接字。
这是一个问题,因为这些孤立的客户端通常会收到来自服务器的消息或超时,这会扰乱服务器上的游戏逻辑(没想到会有这么多玩家等)
我认为发生这种情况的原因是: 1. socket.io 中的客户端在断开连接时会自动定期尝试重新连接 2.关闭选项卡时,与该页面关联的套接字由于某种原因没有被“刷新”或清除。 3.当服务器关闭再启动时,这些未刷新的客户端会想“哦,服务器已备份,我会尝试重新连接”
如何区分已关闭/与旧服务器关联的选项卡的套接字与尝试连接到新重新启动的服务器的新客户端之间的区别?或者有没有办法让我确保在服务器关闭或选项卡时客户端被“刷新”?
【问题讨论】:
标签: javascript node.js websocket socket.io client-server