Socket.IO 硬关闭时未触发套接字断开连接事件 window

Socket.IO socket disconnect event not fired when hard closing window

我目前正在使用 Socket.io 构建聊天室。
一切正常,使用起来非常简单并且有据可查。

问题是,如果我重新加载页面,等待套接字尝试连接,然后在连接之前关闭 window,套接字的断开连接事件永远不会被触发。

仅当我在连接套接字之前但在发送连接请求之后关闭选项卡时才会发生这种情况。

因此,我在刚刚关闭标签时,仍然在聊天室中为其他人显示在线。

有没有办法使服务器上的连接超时?因此,如果套接字不再处于活动状态,我可以为其他用户触发断开连接事件?

我进行了更深入的研究,发现 Socket.io 已经实现了这一点:问题是在我将 'disconnect' 侦听器放在套接字上之前,套接字已关闭。我通过检查底层连接 readyState(在 'closed' 上设置)并为自己触发事件来解决它。 – whitep4nther