Home / Function/ transport() — vite Function Reference

transport() — vite Function Reference

Architecture documentation for the transport() function in client.ts from the vite codebase.

Entity Profile

Dependency Diagram

graph TD
  7dcdb86c_d822_bbd2_a092_4494c22c6bea["transport()"]
  85908ff5_4d12_826d_8235_531f91538758["client.ts"]
  7dcdb86c_d822_bbd2_a092_4494c22c6bea -->|defined in| 85908ff5_4d12_826d_8235_531f91538758
  0dc29000_7d3b_f918_1785_133ec8e42b03["createWebSocketModuleRunnerTransport()"]
  7dcdb86c_d822_bbd2_a092_4494c22c6bea -->|calls| 0dc29000_7d3b_f918_1785_133ec8e42b03
  35fc37bd_c261_5995_72bc_7f84d707de44["send()"]
  7dcdb86c_d822_bbd2_a092_4494c22c6bea -->|calls| 35fc37bd_c261_5995_72bc_7f84d707de44
  style 7dcdb86c_d822_bbd2_a092_4494c22c6bea fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/vite/src/client/client.ts lines 48–109

  (() => {
    let wsTransport = createWebSocketModuleRunnerTransport({
      createConnection: () =>
        new WebSocket(
          `${socketProtocol}://${socketHost}?token=${wsToken}`,
          'vite-hmr',
        ),
      pingInterval: hmrTimeout,
    })

    return {
      async connect(handlers) {
        try {
          await wsTransport.connect(handlers)
        } catch (e) {
          // only use fallback when port is inferred and was not connected before to prevent confusion
          if (!hmrPort) {
            wsTransport = createWebSocketModuleRunnerTransport({
              createConnection: () =>
                new WebSocket(
                  `${socketProtocol}://${directSocketHost}?token=${wsToken}`,
                  'vite-hmr',
                ),
              pingInterval: hmrTimeout,
            })
            try {
              await wsTransport.connect(handlers)
              console.info(
                '[vite] Direct websocket connection fallback. Check out https://vite.dev/config/server-options.html#server-hmr to remove the previous connection error.',
              )
            } catch (e) {
              if (
                e instanceof Error &&
                e.message.includes('WebSocket closed without opened.')
              ) {
                const currentScriptHostURL = new URL(import.meta.url)
                const currentScriptHost =
                  currentScriptHostURL.host +
                  currentScriptHostURL.pathname.replace(/@vite\/client$/, '')
                console.error(
                  '[vite] failed to connect to websocket.\n' +
                    'your current setup:\n' +
                    `  (browser) ${currentScriptHost} <--[HTTP]--> ${serverHost} (server)\n` +
                    `  (browser) ${socketHost} <--[WebSocket (failing)]--> ${directSocketHost} (server)\n` +
                    'Check out your Vite / network configuration and https://vite.dev/config/server-options.html#server-hmr .',
                )
              }
            }
            return
          }
          console.error(`[vite] failed to connect to websocket (${e}). `)
          throw e
        }
      },
      async disconnect() {
        await wsTransport.disconnect()
      },
      send(data) {
        wsTransport.send(data)
      },
    }
  })(),

Domain

Subdomains

Frequently Asked Questions

What does transport() do?
transport() is a function in the vite codebase, defined in packages/vite/src/client/client.ts.
Where is transport() defined?
transport() is defined in packages/vite/src/client/client.ts at line 48.
What does transport() call?
transport() calls 2 function(s): createWebSocketModuleRunnerTransport, send.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free