From 69d09a3a17742e80e6b692839c915f144014e559 Mon Sep 17 00:00:00 2001 From: Christopher Astfalk Date: Wed, 16 Dec 2020 01:12:12 +0100 Subject: [PATCH] fix(bridge): fix cra not updating with HMR --- server/bridge.js | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/server/bridge.js b/server/bridge.js index 75f7a32..0ba14d9 100644 --- a/server/bridge.js +++ b/server/bridge.js @@ -14,8 +14,8 @@ const webSocket = require('ws') const openBridges = new WeakMap() /** - * Creates a middleware that will add an WebSocket server on to the server, - * when first request is made. + * Creates a middleware that will add a WebSocket server on to the server, + * when the first request is made. * This is only for development! * Inspired by ws handling of http-proxy-middleware. * @@ -23,11 +23,26 @@ const openBridges = new WeakMap() */ function createWebSocketCreationRoute (url) { let hasSubscribed = false + let app + const wss = new webSocket.Server({ noServer: true }) + + wss.on('connection', ws => { + openBridges.set(ws, new Bridge(ws, app)) + }) return (req, res, next) => { if (!hasSubscribed) { hasSubscribed = true - createWebSocketServer(req.app, req.connection.server, url) + app = req.app + + // manuel handle upgrade + req.connection.server.on('upgrade', (request, socket, head) => { + if (request.url === url) { + wss.handleUpgrade(request, socket, head, ws => { + wss.emit('connection', ws, request) + }) + } + }) } next() }