diff --git a/src/client.ts b/src/client.ts index 657f947..517381b 100644 --- a/src/client.ts +++ b/src/client.ts @@ -69,10 +69,7 @@ async function ensureSocket(useLocalhost: boolean): Promise { return connecting; } - if (socket && currentOrigin !== origin) { - socket.close(); - socket = null; - } + if (socket && currentOrigin !== origin) closeClient(); connecting = new Promise((resolve, reject) => { const ws = new WebSocket(origin); @@ -88,7 +85,7 @@ async function ensureSocket(useLocalhost: boolean): Promise { currentOrigin = origin; connecting = null; - await sendUnsafe(useLocalhost, { + await sendUnsafe({ type: "auth", cookies: authCookies, }); @@ -146,10 +143,7 @@ async function ensureSocket(useLocalhost: boolean): Promise { RPC helpers ────────────────────────── */ -async function sendUnsafe( - useLocalhost: boolean, - payload: Record, -): Promise { +async function sendUnsafe(payload: Record): Promise { if (!socket || socket.readyState !== WebSocket.OPEN) { throw new Error("WebSocket is not open"); } @@ -164,7 +158,11 @@ async function sendUnsafe( pending.set(requestId, { resolve, reject, timeout }); - socket?.send(JSON.stringify({ ...payload, requestId })); + if (!socket || socket.readyState !== WebSocket.OPEN) { + throw new Error("WebSocket closed while sending"); + } + + socket.send(JSON.stringify({ ...payload, requestId })); }); } @@ -173,7 +171,7 @@ async function send( payload: Record, ): Promise { await ensureSocket(useLocalhost); - return sendUnsafe(useLocalhost, payload); + return sendUnsafe(payload); } /* ──────────────────────────