在使用websocket的时候,需要传入socket的地址
socket = new WebSocket(`http://localhost:8000/ws/task_state`)
但是如果想修改socket的地址,就需要修改代码后重新打包,如何给socket像http请求那样配置一个代理呢?
在项目的vite.config.js中配置一个代理服务器,
'/ws': {
target: 'ws://xxxx:8000', // target host
ws: true, // proxy websockets
changeOrigin: true, // needed for virtual hosted sites
}
在new一个websocket对象时传入‘/ws’
socket = new WebSocket(`/ws`)
但发现根本连接不上,
之后发现在http请求中它会自动给请求的url中加入“http://localhost:xxx”,但是websocket连接时候就不会加,会不会是vite打包时候做了什么,
如果创建的时候手动给webSocket加上当前的“location.host”会不会就可以了呢
socket = new WebSocket(`ws://${location.host}/ws`)
结果还真就连上了。