From a35e573b65d3719157ca161b3e7e6ae2eeb4b26b Mon Sep 17 00:00:00 2001 From: Blake Miner Date: Tue, 12 Dec 2023 11:03:44 -0500 Subject: [PATCH] Fix HMR server when WebSocket proxy is running on the same port (fixes #6994) --- packages/reporters/dev-server/src/HMRServer.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/reporters/dev-server/src/HMRServer.js b/packages/reporters/dev-server/src/HMRServer.js index de9528df5e3..1df8b706d81 100644 --- a/packages/reporters/dev-server/src/HMRServer.js +++ b/packages/reporters/dev-server/src/HMRServer.js @@ -86,7 +86,14 @@ export default class HMRServer { } else { this.options.addMiddleware?.((req, res) => this.handle(req, res)); } - this.wss = new WebSocket.Server({server}); + this.wss = new WebSocket.Server({noServer: true}); + server.on('upgrade', (req, ws, head) => { + let {pathname} = url.parse(req.originalUrl || req.url); + if (pathname != null && pathname.startsWith(HMR_ENDPOINT)) { + const emitConnection = this.wss.emit.bind(this.wss, 'connection'); + this.wss.handleUpgrade(req, ws, head, emitConnection); + } + }) this.wss.on('connection', ws => { if (this.unresolvedError) {