我正在尝试做一个实时的应用程序。我使用NodeJS作为服务器和Socket.IO来实现我的实时功能。
问题是,我收到了错误,因为:
WebSocket connection to 'wss://localhost:1234/socket.io/?EIO=3&transport=websocket' failed: Invalid frame header
我尝试了很多事情,比如将https更改为http、降低Socket.IO版本等等,但是对我来说没有什么效果。请帮我找出问题的原因,以便我能找出我的应用程序中的错误。我不想去看其他彗星协议。
发布于 2022-06-30 07:41:44
我遇到的问题是,当我使用create app和"npm运行启动“运行它时,在开发过程中获得实时刷新本地版本,默认情况下使用带有/ws
路径的websocket。这与我的应用程序也在使用这条路径相冲突。因此,当您将setupProxy.js
与http中间件一起使用时,它将两者都转发到api服务器,这将导致无效的帧头。
解决方案是在web应用程序中,将websocket路由改为其他类似于/websocket
的路由,在setupProxy.js
中这样设置:
const { createProxyMiddleware } = require('http-proxy-middleware');
module.exports = function(app) {
app.use(
// Do not use `/ws` as it conflicts with create-react-app's hotrefresh socket.
createProxyMiddleware('/websocket', {
target: 'http://localhost:3000',
ws: true,
changeOrigin: true,
})
);
};
https://stackoverflow.com/questions/43526607
复制相似问题