gpt4 book ai didi

reactjs - 使用 react-scripts 代理 websocket 不起作用

转载 作者:行者123 更新时间:2023-12-04 10:47:13 25 4
gpt4 key购买 nike

我有一个 react web 应用程序,我使用 react-scripts 进行开发。我使用代理将请求和 websockets 代理到后端。

我的 package.json :

{
"name": "webapp",
"version": "0.1.0",
"private": true,
"dependencies": {
// ...
"react-scripts": "^3.3.0"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": {
// ...
},
"devDependencies": {
// ...
},
"homepage": "/home"
}


我有一个 setupProxy.js :
const proxy = require("http-proxy-middleware")

module.exports = app => {
app.use(proxy('/api', {
target: 'http://127.0.0.1:9140',
ws: true
}));

app.disable('etag');
}

代理适用于 http 请求。 React Web 应用程序在 http://localhost:3000/api/foo/bar 上执行请求并且请求在 http://localhost:9140/api/foo/bar 上被代理.

我的问题是 websockets。 react web 应用程序在 ws://localhost:3000/api/foo/bar 上打开一个 websocket , 后端接收 websocket 请求并升级它并以 101 http 代码响应。但是 react web 应用程序永远不会收到这个响应。 React Web 应用程序收到 400 http 代码响应。所以websocket是关闭的。

我试图找出 react 应用程序收到 400 错误的原因。我尝试了很多代理配置(我尝试了 package.json 文件中的代理配置,我尝试了基于 http-proxy-middleware github 页面的其他一些可能的配置)。

我发现 http-proxy-middleware 有问题和 react-scripts :
  • https://github.com/facebook/create-react-app/issues/5280
  • https://github.com/chimurai/http-proxy-middleware/issues/112

  • 经过一番调查,问题似乎来自 sockjs-node由 Webpack 使用。它看起来像 sockjs-node捕获请求并用错误 400 响应替换我的后端响应。

    有谁知道如何使 websockets 在开发中的 react 应用程序中与代理一起工作?

    最佳答案

    在 create-react-app v3.3.0 中,websocket 代理是 broken .尝试降级到 v3.2.0。我仍然使用 v3.3.0 测试版,因为我依赖无效合并,但我通常不建议使用测试版。

    关于reactjs - 使用 react-scripts 代理 websocket 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59644101/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com