diff --git a/frontend/src/crdt/WebSocketProvider.ts b/frontend/src/crdt/WebSocketProvider.ts index 3e2f609..82888af 100644 --- a/frontend/src/crdt/WebSocketProvider.ts +++ b/frontend/src/crdt/WebSocketProvider.ts @@ -45,7 +45,14 @@ export class WebSocketProvider { this.setStatus('connecting'); const fullUrl = `${this.url}/ws/collab/${encodeURIComponent(this.docName)}`; - this.ws = new WebSocket(fullUrl); + try { + this.ws = new WebSocket(fullUrl); + } catch (err) { + console.warn('[WebSocketProvider] Failed to construct WebSocket:', err); + this.setStatus('error'); + this.scheduleReconnect(); + return; + } this.ws.binaryType = 'arraybuffer'; this.ws.onopen = () => { diff --git a/frontend/src/crdt/useYjsBinding.ts b/frontend/src/crdt/useYjsBinding.ts index 69d0bb2..705963c 100644 --- a/frontend/src/crdt/useYjsBinding.ts +++ b/frontend/src/crdt/useYjsBinding.ts @@ -41,7 +41,7 @@ export interface UseYjsBindingResult { clearSelection: () => void; } -const DEFAULT_WS_URL = `ws://${window.location.hostname}:3001`; +const DEFAULT_WS_URL = `wss://${window.location.host}`; export function useYjsBinding(opts: UseYjsBindingOptions): UseYjsBindingResult { const { docName, wsUrl = DEFAULT_WS_URL, userId, userName, userColor, enabled = true } = opts;