我有一个使用 xhr 作为其唯一传输的 socket.io 连接。当我在浏览器中加载应用程序(在 chrome 和 ff 中测试)时,套接字连接并且一切正常,直到我离开页面。如果我重新加载浏览器,我可以看到客户端发出了“断开连接”事件,但服务器断开连接事件在很长一段时间内都不会触发(可能是客户端心跳超时时)。这是一个问题,因为当客户端断开连接时,我在服务器中进行了一些清理工作。如果客户端重新加载,我会在断开连接之前收到多个连接事件。我也尝试在窗口的“beforeunload”事件中手动从客户端发出断开消息,但无济于事。有任何想法吗?
我调试了 socket.io 服务器,我可以确认 Manager.prototype.onClientDisconnect 只是因为“关闭超时”的原因而受到打击。