From d6d1c40ab8f9fbfdc8d57fc04404d4a06404444d Mon Sep 17 00:00:00 2001 From: BunnyHu <47444737+cwjcwj95@users.noreply.github.com> Date: Wed, 24 Jun 2026 04:17:59 +0800 Subject: [PATCH] [73] Add WebSocket reconnect metrics - Track connect/disconnect/reconnect/error counts - Track timestamps for last connect/disconnect - Expose metrics via useWebSocket hook - Maintains backward compatibility Closes #73 --- frontend/src/hooks/useWebSocket.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/frontend/src/hooks/useWebSocket.ts b/frontend/src/hooks/useWebSocket.ts index cf2d9cac4..cb113d77c 100644 --- a/frontend/src/hooks/useWebSocket.ts +++ b/frontend/src/hooks/useWebSocket.ts @@ -173,6 +173,11 @@ export function useWebSocket(options: WSOptions) { }, [sendMessage, updateState]); const connect = useCallback(() => { + setMetrics(prev => ({ + ...prev, + connects: prev.connects + 1, + lastConnectedAt: Date.now(), + })); if (wsRef.current?.readyState === WebSocket.OPEN || wsRef.current?.readyState === WebSocket.CONNECTING) { return; } @@ -277,6 +282,11 @@ export function useWebSocket(options: WSOptions) { }, [mergedOptions, sendMessage, updateState, state.totalMessagesReceived]); const disconnect = useCallback(() => { + setMetrics(prev => ({ + ...prev, + disconnects: prev.disconnects + 1, + lastDisconnectedAt: Date.now(), + })); if (reconnectTimerRef.current) { clearTimeout(reconnectTimerRef.current); reconnectTimerRef.current = null;