mirror of
https://github.com/siteboon/claudecodeui.git
synced 2026-02-04 07:47:33 +00:00
fix: Prevent WebSocket reconnection attempts after unmount
Right now, when the WebSocketContext component unmounts, there is still a pending reconnection attempt that tries to reconnect the WebSocket after 3 seconds.
This commit is contained in:
@@ -19,6 +19,7 @@ export const useWebSocket = () => {
|
|||||||
|
|
||||||
const useWebSocketProviderState = () => {
|
const useWebSocketProviderState = () => {
|
||||||
const wsRef = useRef<WebSocket | null>(null);
|
const wsRef = useRef<WebSocket | null>(null);
|
||||||
|
const unmountedRef = useRef(false);
|
||||||
const [messages, setMessages] = useState<any[]>([]);
|
const [messages, setMessages] = useState<any[]>([]);
|
||||||
const [isConnected, setIsConnected] = useState(false);
|
const [isConnected, setIsConnected] = useState(false);
|
||||||
const reconnectTimeoutRef = useRef<NodeJS.Timeout | null>(null);
|
const reconnectTimeoutRef = useRef<NodeJS.Timeout | null>(null);
|
||||||
@@ -27,6 +28,7 @@ const useWebSocketProviderState = () => {
|
|||||||
connect();
|
connect();
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
|
unmountedRef.current = true;
|
||||||
if (reconnectTimeoutRef.current) {
|
if (reconnectTimeoutRef.current) {
|
||||||
clearTimeout(reconnectTimeoutRef.current);
|
clearTimeout(reconnectTimeoutRef.current);
|
||||||
}
|
}
|
||||||
@@ -37,6 +39,7 @@ const useWebSocketProviderState = () => {
|
|||||||
}, []); // Keep dependency array but add proper cleanup
|
}, []); // Keep dependency array but add proper cleanup
|
||||||
|
|
||||||
const connect = () => {
|
const connect = () => {
|
||||||
|
if (unmountedRef.current) return; // Prevent connection if unmounted
|
||||||
try {
|
try {
|
||||||
const isPlatform = import.meta.env.VITE_IS_PLATFORM === 'true';
|
const isPlatform = import.meta.env.VITE_IS_PLATFORM === 'true';
|
||||||
|
|
||||||
@@ -79,6 +82,7 @@ const useWebSocketProviderState = () => {
|
|||||||
|
|
||||||
// Attempt to reconnect after 3 seconds
|
// Attempt to reconnect after 3 seconds
|
||||||
reconnectTimeoutRef.current = setTimeout(() => {
|
reconnectTimeoutRef.current = setTimeout(() => {
|
||||||
|
if (unmountedRef.current) return; // Prevent reconnection if unmounted
|
||||||
connect();
|
connect();
|
||||||
}, 3000);
|
}, 3000);
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user