Socket-io客户端不断发送连接请求

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Socket-io客户端不断发送连接请求相关的知识,希望对你有一定的参考价值。

我正在创建包含一些实时功能的应用。我在前端使用Node.jsSocketIOExpress + React。我的后端处理httpws请求。我使用带代理选项的webpack-dev-server将客户端的请求重定向到我的本地服务器。

几天前,虽然我既没有触及webpack配置也没有触及后端代码,但客户端单个调用io({ path: '/socket' })会导致向我的后端发送大量连接请求。

原因不是HMR,组件重新渲染或客户端的某些循环。我确信客户端只调用一次io({ path: '/socket' })。即使我将分支更改为一些旧分支(其中问题肯定不存在),在重新安装所有node_modules之后,问题仍然存在。所以这可能是一些网络/硬件相关甚至。我使用Windows 10,Node.js 6。

我的后端在控制台中生成的调试模式中的示例日志:

enter image description here

这只是日志的一部分,通常它会保持连接非常快并且不会停止。

知道这里发生了什么吗?

答案

问题是socket.io继续使用长轮询,即使websocket已经可用。为了解决这个问题,我将transports: ['websocket']传递给了这样的连接选项:

import io from 'socket.io-client';
io({ path: '/socket', transports: ['websocket'] });

以上是关于Socket-io客户端不断发送连接请求的主要内容,如果未能解决你的问题,请参考以下文章

SSE 服务器发送事件 - 客户端不断发送请求(如池)

Chrome v88+ 和 Nestjs 服务器上的 socket-io 连接出现 CORS 错误

如何检查通过 socket-io 发送的消息是不是被读取?

Flask Socket-IO 服务器客户端不通信(使用 tweepy 和 twilio)

怎么实现客户端浏览器每隔30秒向服务器发送一次请求?

BitTorrent:发送请求的最佳速率?