【发布时间】:2020-01-15 22:51:02
【问题描述】:
当节点服务器使用socket.disconnect(true); 断开客户端连接时,我使用socket.open() 在客户端再次手动打开连接。
问题是当socket.open() 被触发时,socket.on('reconnect', (attemptNumber) => { 函数没有被触发。
socket.on('connect', () => { 工作正常,但我希望里面的代码只在服务器关闭连接后重新连接时执行。
为什么重新连接功能在手动重新连接时不起作用?我可以做些什么来修复或解决这个问题?
【问题讨论】:
-
因为您没有“重新连接”。你正在连接。
reconnect事件及其关联的attemptNumber仅在套接字尝试自动重新连接时发生(因为它因各种意外事件而失去连接,例如服务器重新启动、网络连接丢失等)。当服务器强行断开套接字时,套接字确切地知道它断开的原因并且不会尝试重新连接。所以socket.open()始终是连接而不是重新连接。 -
我得问问。当服务器断开您的连接时,您为什么会自动重新连接? socket.io 没有这样做是有原因的。大多数时候,您希望以不同的方式处理服务器强制断开连接,而不仅仅是强制另一个连接。就像服务器断开连接的原因是什么?您不想根据这些原因采取不同的行动吗?
-
由于凭据超时,服务器正在断开此人的连接。前端获取新凭据并重新连接到服务器。
-
@gforce301 如果你要说什么,我希望你直接出来说。
-
“你本可以走上留下解释的道路”。我确实在我的第一条评论中解释了它。
标签: javascript node.js socket.io