Socket-io 客户端不断发送连接请求
Socket-io client keeps sending connect requests
我正在创建包含一些实时功能的应用程序。我在前端使用 Node.js
、SocketIO
和 Express
+ React
。我的后端处理 http
和 ws
请求。我使用 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'] });
我正在创建包含一些实时功能的应用程序。我在前端使用 Node.js
、SocketIO
和 Express
+ React
。我的后端处理 http
和 ws
请求。我使用 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'] });