Skip to content

Commit

Permalink
fix double websocket connection in dev mode (#5790)
Browse files Browse the repository at this point in the history
  • Loading branch information
rbren authored Dec 26, 2024
1 parent 172183f commit 95b416f
Showing 1 changed file with 10 additions and 21 deletions.
31 changes: 10 additions & 21 deletions frontend/src/context/ws-client-provider.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,6 @@ export function WsClientProvider({
}: React.PropsWithChildren<WsClientProviderProps>) {
const sioRef = React.useRef<Socket | null>(null);
const ghTokenRef = React.useRef<string | null>(ghToken);
const disconnectRef = React.useRef<ReturnType<typeof setTimeout> | null>(
null,
);
const [status, setStatus] = React.useState(
WsClientProviderStatus.DISCONNECTED,
);
Expand Down Expand Up @@ -133,24 +130,16 @@ export function WsClientProvider({
};
}, [ghToken, conversationId]);

// Strict mode mounts and unmounts each component twice, so we have to wait in the destructor
// before actually disconnecting the socket and cancel the operation if the component gets remounted.
React.useEffect(() => {
const timeout = disconnectRef.current;
if (timeout != null) {
clearTimeout(timeout);
}

return () => {
disconnectRef.current = setTimeout(() => {
const sio = sioRef.current;
if (sio) {
sio.off("disconnect", handleDisconnect);
sio.disconnect();
}
}, 100);
};
}, []);
React.useEffect(
() => () => {
const sio = sioRef.current;
if (sio) {
sio.off("disconnect", handleDisconnect);
sio.disconnect();
}
},
[],
);

const value = React.useMemo<UseWsClient>(
() => ({
Expand Down

0 comments on commit 95b416f

Please sign in to comment.