socket.io 频繁的 xhr 请求

Posted

技术标签:

【中文标题】socket.io 频繁的 xhr 请求【英文标题】:Frequent xhr request by socket.io 【发布时间】:2022-01-13 17:20:17 【问题描述】:

当我从客户端连接到套接字服务器时,这被认为是反应,每隔几秒钟,套接字客户端就会发送一个重复的请求。通常,请求是获取类型的,并且大部分时间它们处于挂起模式。有时请求的结果是 2。 您认为在连接或使用套接字后发送重复请求的问题是什么?

更新

当我使用 namespace 时会出现这个问题。我尝试了所有的解决方案,但没有解决这个问题。

image

【问题讨论】:

这就是它的工作原理。你可以在这里阅读所有内容socket.io/docs/v3/how-it-works 【参考方案1】:

当用于传输的选项是轮询(长轮询)时,这是预期行为。

默认情况下,传输参数是["polling", "websocket"](client,server),其中元素的顺序很重要。因此,第一次连接尝试是通过 polling 进行的(与 websocket 相比启动速度更快),然后(或并行,我不知道工作细节)有一个连接尝试websocket(这需要更长的时间来建立,但对于以后的通信来说更快)。

如果websocket连接建立成功,通信就会以这种方式进行。但是如果发生错误,或者连接需要很长时间才能建立,或者实例的参数中没有这个传输选项,那么通信将继续通过 polling 进行,它们是各种未决的请求。他们处于待处理状态是正常的,因此他们会收到更新并能够立即通知请求者,而无需多次快速请求来查询应用程序的状态。

检查您为此连接设置的实例参数,以了解是否启用了通过 websocket 的传输。使用 反向代理 后面的套接字服务器时要小心,因为此反向代理需要正确配置以接受 websocket 连接,否则它将无法工作。

您可以通过启用WS 过滤器在浏览器检查的“网络”选项卡中检查 websocket 请求。


这里有一些额外的链接供您阅读:

https://socket.io/docs/v4/how-it-works/ https://socket.io/docs/v4/using-multiple-nodes/ https://socket.io/docs/v4/reverse-proxy/ https://ably.com/blog/websockets-vs-long-polling

【讨论】:

以上是关于socket.io 频繁的 xhr 请求的主要内容,如果未能解决你的问题,请参考以下文章

Socket.io 客户端切换到 xhr-polling 时出错

socket.io 通过 XHR 轮询强制断开连接

Socket.io 问题:使用“xhr-polling”初始化大量客户端

连接错误:io.socket.engineio.client.EngineIOException:xhr 轮询错误

接收错误:xhr 轮询错误 socket.io 客户端反应

如何在 Socket.IO 中使用 xhr-polling 存储持久数据?