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

Socket-io client keeps sending connect requests

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

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

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

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

这只是日志的一部分,一般来说它一直保持快速连接并且不会停止。

知道这里发生了什么吗?

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

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