diff --git a/src/runtime/internal/websocket.ts b/src/runtime/internal/websocket.ts index 9d1552ac2..0de4426a6 100644 --- a/src/runtime/internal/websocket.ts +++ b/src/runtime/internal/websocket.ts @@ -1,5 +1,6 @@ import { loadDatabaseAdapter } from './database.client' import { useRuntimeConfig, refreshNuxtData } from '#imports' +import { joinURL } from 'ufo' const logger = { log: (...args: unknown[]) => console.log('[Content]', ...args), @@ -79,9 +80,8 @@ export function useContentWebSocket() { } // WebSocket Base URL - const wsURL = new URL(`${(useRuntimeConfig().public.content as { wsUrl: string }).wsUrl}ws`) + const wsURL = new URL(joinURL((useRuntimeConfig().public.content as { wsUrl: string }).wsUrl, 'ws')) wsURL.protocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:' - wsURL.hostname = window.location.hostname logger.log(`WS connect to ${wsURL}`) diff --git a/src/utils/dev.ts b/src/utils/dev.ts index f69196bcf..cd0b867f1 100644 --- a/src/utils/dev.ts +++ b/src/utils/dev.ts @@ -36,7 +36,8 @@ export async function startSocketServer(nuxt: Nuxt, options: ModuleOptions, mani listener = await listen(() => 'Nuxt Content', websocketOptions) // Register ws url - ;(nitro.options.runtimeConfig.public.content as Record).wsUrl = listener.url.replace('http', 'ws') + const publicConfig = nitro.options.runtimeConfig.public.content as Record + publicConfig.wsUrl = (websocketOptions.publicURL || listener.url).replace('http', 'ws') listener.server.on('upgrade', websocket.serve) })