fix duplicate websocket messages from zombie connection under react strict mode

detach ws event handlers before close() in WsProvider cleanup so a CONNECTING socket's deferred onclose can't schedule a reconnect after the next mount resets the unmounted guard, which was spawning a second live ws and duplicating every message
This commit is contained in:
Josh Hawkins 2026-05-07 12:36:50 -05:00
parent 1813ce6270
commit d8905e0dfa

View File

@ -56,7 +56,14 @@ export function WsProvider({ children }: { children: ReactNode }) {
if (reconnectTimer.current) { if (reconnectTimer.current) {
clearTimeout(reconnectTimer.current); clearTimeout(reconnectTimer.current);
} }
wsRef.current?.close(); const ws = wsRef.current;
if (ws) {
ws.onopen = null;
ws.onmessage = null;
ws.onclose = null;
ws.onerror = null;
ws.close();
}
resetWsStore(); resetWsStore();
}; };
}, [wsUrl]); }, [wsUrl]);