我在docker容器中创建了一个CRA,我试图将websocket代理到另一个运行python后端的容器。我一生无法连接正常。
我通过暴露docker的端口外部并从浏览器直接连接到它来验证服务器是否正常工作-它可以连接并正常工作。
我还可以验证CRA泊坞站内的连接 是否已正确设置-在其中启动外壳并执行
> WS = require('ws')
> new WS(`ws://server:8765/ws/foo`).addEventListener('open', e => console.log('open'))
,它也可以连接并打印open
。 (这就是为什么我这里没有docker
标记的原因,据我了解,这消除了docker成为可能的问题,因为我已经确认我可以相互连接)
我唯一能想到的是代理配置错误
这就是我要在客户端上执行的操作
const socket = new WebSocket(`ws:localhost/ws/foo`)
我的代理设置
const proxy = require("http-proxy-middleware")
module.exports = (app) => {
as I can tell. Need to circle back
app.use(`/ws*`, proxy({
target: 'ws://server:8765/ws',
changeOrigin: true,
ws: true,
}))
}
我已经尝试过使用/ws
并将URL放在proxy
子句中,而不是use
并没有任何作用
我真的不确定还有什么可以错过的。
这是我的依赖版本
"dependencies": {
"@reach/router": "^1.2.1",
"http-proxy-middleware": "^0.20.0",
"react": "^16.10.2",
"react-dom": "^16.10.2",
"react-scripts": "3.2.0",
"styled-components": "^4.4.0"
},