Skip to content

Commit 9243cc9

Browse files
authored
feat: allow custom websocket server (#2338)
1 parent ee7eb82 commit 9243cc9

File tree

2 files changed

+8
-5
lines changed

2 files changed

+8
-5
lines changed

packages/vite/src/node/server/hmr.ts

+2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { CLIENT_DIR } from '../constants'
99
import { RollupError } from 'rollup'
1010
import { prepareError } from './middlewares/error'
1111
import match from 'minimatch'
12+
import { Server } from 'http'
1213

1314
export const debugHmr = createDebugger('vite:hmr')
1415

@@ -21,6 +22,7 @@ export interface HmrOptions {
2122
path?: string
2223
timeout?: number
2324
overlay?: boolean
25+
server?: Server
2426
}
2527

2628
export interface HmrContext {

packages/vite/src/node/server/ws.ts

+6-5
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,12 @@ export function createWebSocketServer(
1717
): WebSocketServer {
1818
let wss: WebSocket.Server
1919

20-
if (server) {
20+
const hmr = typeof config.server.hmr === 'object' && config.server.hmr
21+
const wsServer = (hmr && hmr.server) || server
22+
23+
if (wsServer) {
2124
wss = new WebSocket.Server({ noServer: true })
22-
server.on('upgrade', (req, socket, head) => {
25+
wsServer.on('upgrade', (req, socket, head) => {
2326
if (req.headers['sec-websocket-protocol'] === HMR_HEADER) {
2427
wss.handleUpgrade(req, socket, head, (ws) => {
2528
wss.emit('connection', ws, req)
@@ -29,9 +32,7 @@ export function createWebSocketServer(
2932
} else {
3033
// vite dev server in middleware mode
3134
wss = new WebSocket.Server({
32-
port:
33-
(typeof config.server.hmr === 'object' && config.server.hmr.port) ||
34-
24678
35+
port: (hmr && hmr.port) || 24678
3536
})
3637
}
3738

0 commit comments

Comments
 (0)