【发布时间】:2021-02-11 13:02:03
【问题描述】:
我有一个 Angular 8 应用程序,它与 Node 后端通信并使用 socket.io-client 3.0.5 从后端(使用 socket.io 3.0.4)接收实时事件。操作如下:
- 当用户登录时,使用
this.socket = io(API_URL)打开一个新的套接字连接 - 有些 API 调用需要很长时间才能完成(超过 25 秒),因此它们不断通过 Web 套接字连接发出信息消息,因此我可以在前端更新视图。我们通过传递
channel_id作为参数来做到这一点,这基本上是我们将要监听以获取消息的事件名称。 - 在下图中,我显示了执行 9 个“编译”调用的批处理的输出:
前 4 个调用运行良好,接收到所有套接字消息。然而,突然间,我看到来自 socket.io 库的一些调用(以?EIO=4&transport=polling 开头的那些)似乎取消了现有的 websocket 连接并开始一个新的连接,如下图所示(抱歉,socket id 与前一个不同,因为它是另一次运行):
我不对 API 调用之间的套接字连接做任何事情。代码执行以下操作:
- (在开始通话之前)创建一个
channel_id并使用this.socket.on(channelId, (event: any) => { ... });开始监听它 - 使用
for循环使用上述channel_id进行API调用,一一进行 - 所有调用结束后,使用
socket.off“取消订阅”套接字消息
我已经做了很多测试,但我找不到断开连接的原因,我不知道我还能查看什么。任何人都可以给我一些关于检查什么可以帮助我解决这个问题的建议?
非常感谢!
【问题讨论】: