升级到 v3 后,当我在客户端或服务器端调用socket.disconnect()
时,似乎管理器的底层连接也被关闭 - 使用相同管理器/底层连接的所有其他套接字也断开连接。
我不知道在哪里提交这个问题。 也许它在engine.io v4中有根?
这是升级期间我的项目的差异。 我很抱歉它也包含一些不相关的更改。 我要强调的主要内容是我没有对设置和管理连接的方式进行任何更改(您可以 cmd+F 表示“断开连接”、“关闭”、“io.socket”)。
请看这个 jsfiddle 。
v2 的行为是在客户端和服务器端调用socket.close()
应该只在管理器具有多个命名空间时关闭该套接字 - 它不应该关闭该套接字管理器下的每个多路复用套接字。
观察使用 socket.io v2 时的行为差异。
我花了很多时间调试自己的代码,以为我破坏了某些东西:')
期待修复! 再次感谢您在启动 v3 时的辛勤工作。
“connecting”事件永远不会在套接字连接上触发,也不会填充管理器中的connecting
数组:
https://github.com/socketio/socket.io-client/blame/master/lib/manager.ts#L599
当 _destroy 被调用时, if (this.connecting.length) return; this._close();
将始终关闭连接。
我在客户端代码中没有看到问题。 在服务器代码中,我找不到任何名为“connecting”的事件。
这是删除“连接”发出的提交。
https://github.com/socketio/socket.io-client/commit/b60e909039d4bbb979d32ec86ac16c5398526b44#diff -f0e64910289a49966c99ceadaa5637404e3439ec081d0a3439ec081d23a
@darrachequesne你能检查一下这个问题吗?
@david-fong 我确实可以重现这个问题,非常感谢您提供的详细步骤:+1:
这应该由https://github.com/socketio/socket.io-client/commit/f8f60fc860f51aa6465fc32dd9275a8e1d22f05d (包含在[email protected]
)修复。
再次感谢您的详细报告,这真的很有帮助!