createWebSocketModuleRunnerTransport() — vite Function Reference
Architecture documentation for the createWebSocketModuleRunnerTransport() function in moduleRunnerTransport.ts from the vite codebase.
Entity Profile
Dependency Diagram
graph TD 0dc29000_7d3b_f918_1785_133ec8e42b03["createWebSocketModuleRunnerTransport()"] a469d907_868c_e1c2_3f7a_7aaf42cc6a7a["moduleRunnerTransport.ts"] 0dc29000_7d3b_f918_1785_133ec8e42b03 -->|defined in| a469d907_868c_e1c2_3f7a_7aaf42cc6a7a 7dcdb86c_d822_bbd2_a092_4494c22c6bea["transport()"] 7dcdb86c_d822_bbd2_a092_4494c22c6bea -->|calls| 0dc29000_7d3b_f918_1785_133ec8e42b03 style 0dc29000_7d3b_f918_1785_133ec8e42b03 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/vite/src/shared/moduleRunnerTransport.ts lines 258–327
export const createWebSocketModuleRunnerTransport = (options: {
// eslint-disable-next-line n/no-unsupported-features/node-builtins
createConnection: () => WebSocket
pingInterval?: number
}): Required<
Pick<ModuleRunnerTransport, 'connect' | 'disconnect' | 'send'>
> => {
const pingInterval = options.pingInterval ?? 30000
// eslint-disable-next-line n/no-unsupported-features/node-builtins
let ws: WebSocket | undefined
let pingIntervalId: ReturnType<typeof setInterval> | undefined
return {
async connect({ onMessage, onDisconnection }) {
const socket = options.createConnection()
socket.addEventListener('message', async ({ data }) => {
onMessage(JSON.parse(data))
})
let isOpened = socket.readyState === socket.OPEN
if (!isOpened) {
await new Promise<void>((resolve, reject) => {
socket.addEventListener(
'open',
() => {
isOpened = true
resolve()
},
{ once: true },
)
socket.addEventListener('close', async () => {
if (!isOpened) {
reject(new Error('WebSocket closed without opened.'))
return
}
onMessage({
type: 'custom',
event: 'vite:ws:disconnect',
data: { webSocket: socket },
})
onDisconnection()
})
})
}
onMessage({
type: 'custom',
event: 'vite:ws:connect',
data: { webSocket: socket },
})
ws = socket
// proxy(nginx, docker) hmr ws maybe caused timeout,
// so send ping package let ws keep alive.
pingIntervalId = setInterval(() => {
if (socket.readyState === socket.OPEN) {
socket.send(JSON.stringify({ type: 'ping' }))
}
}, pingInterval)
},
disconnect() {
clearInterval(pingIntervalId)
ws?.close()
},
send(data) {
ws!.send(JSON.stringify(data))
},
}
}
Domain
Subdomains
Called By
Source
Frequently Asked Questions
What does createWebSocketModuleRunnerTransport() do?
createWebSocketModuleRunnerTransport() is a function in the vite codebase, defined in packages/vite/src/shared/moduleRunnerTransport.ts.
Where is createWebSocketModuleRunnerTransport() defined?
createWebSocketModuleRunnerTransport() is defined in packages/vite/src/shared/moduleRunnerTransport.ts at line 258.
What calls createWebSocketModuleRunnerTransport()?
createWebSocketModuleRunnerTransport() is called by 1 function(s): transport.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free