diff --git a/packages/core/src/server/proxy.ts b/packages/core/src/server/proxy.ts index 3d792a1370..336ccbdb65 100644 --- a/packages/core/src/server/proxy.ts +++ b/packages/core/src/server/proxy.ts @@ -68,7 +68,10 @@ export const createProxyMiddleware = (proxyOptions: ProxyOptions) => { }; middlewares.push(middleware); - proxyMiddlewares.push(proxyMiddleware); + + // only proxy WebSocket request when user specified + // fix WebSocket error when user forget filter hmr path + opts.ws && proxyMiddlewares.push(proxyMiddleware); } const handleUpgrade: UpgradeEvent = (req, socket, head) => { diff --git a/packages/document/docs/en/config/server/proxy.mdx b/packages/document/docs/en/config/server/proxy.mdx index 33b5e7d944..679a7cbb5a 100644 --- a/packages/document/docs/en/config/server/proxy.mdx +++ b/packages/document/docs/en/config/server/proxy.mdx @@ -56,6 +56,23 @@ export default { }; ``` +### Proxy WebSocket + +If you want to proxy WebSocket requests, you can enable it through set `ws` to `true`: + +```js +export default { + server: { + proxy: { + '/rsbuild-hmr': { + target: 'http://localhost:3000', // will proxy to ws://localhost:3000/rsbuild-hmr + ws: true, + }, + }, + }, +}; +``` + ## Options The Rsbuild Server Proxy makes use of the [http-proxy-middleware](https://github.com/chimurai/http-proxy-middleware/tree/2.x) package. Check out its documentation for more advanced usages. diff --git a/packages/document/docs/zh/config/server/proxy.mdx b/packages/document/docs/zh/config/server/proxy.mdx index 1191711990..a61072721e 100644 --- a/packages/document/docs/zh/config/server/proxy.mdx +++ b/packages/document/docs/zh/config/server/proxy.mdx @@ -56,6 +56,23 @@ export default { }; ``` +### 代理 WebSocket 请求 + +如果你希望代理 WebSocket 请求,可以通过 `ws` 开启: + +```js +export default { + server: { + proxy: { + '/rsbuild-hmr': { + target: 'http://localhost:3000', // 将会代理到 ws://localhost:3000/rsbuild-hmr + ws: true, + }, + }, + }, +}; +``` + ## 选项 Rsbuild Server Proxy 基于 [http-proxy-middleware](https://github.com/chimurai/http-proxy-middleware/tree/2.x) 实现。你可以使用 http-proxy-middleware 的所有配置项,具体可以查看文档。