Socket.io-client: v3 断开套接字似乎关闭了底层连接。

创建于 2020-11-16  ·  4评论  ·  资料来源: socketio/socket.io-client

你想要:

  • [x] 报告错误
  • [ ] 请求功能

当前行为

升级到 v3 后,当我在客户端或服务器端调用socket.disconnect()时,似乎管理器的底层连接也被关闭 - 使用相同管理器/底层连接的所有其他套接字也断开连接。

我不知道在哪里提交这个问题。 也许它在engine.io v4中有根?

这是升级期间我的项目的差异。 我很抱歉它也包含一些不相关的更改。 我要强调的主要内容是我没有对设置和管理连接的方式进行任何更改(您可以 cmd+F 表示“断开连接”、“关闭”、“io.socket”)。

重现步骤(如果当前行为是错误)

请看这个 jsfiddle

预期行为

v2 的行为是在客户端和服务器端调用socket.close()应该只在管理器具有多个命名空间时关闭该套接字 - 它不应该关闭该套接字管理器下的每个多路复用套接字。

设置

  • 操作系统:Windows 10
  • 浏览器:Chrome 86.0
  • socket.io 版本:3.0.0

观察使用 socket.io v2 时的行为差异。

其他信息(例如堆栈跟踪、相关问题、如何修复的建议)

所有4条评论

我花了很多时间调试自己的代码,以为我破坏了某些东西:')

期待修复! 再次感谢您在启动 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] )修复。

再次感谢您的详细报告,这真的很有帮助!

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

jr-k picture jr-k  ·  19评论

benzen picture benzen  ·  19评论

amitport picture amitport  ·  49评论

bfang711 picture bfang711  ·  14评论

JohnCoding94 picture JohnCoding94  ·  13评论