diff --git a/frontend/app/lib/agentsync/hooks/WebSocketClient.ts b/frontend/app/lib/agentsync/hooks/WebSocketClient.ts index f5c168748..05d557084 100644 --- a/frontend/app/lib/agentsync/hooks/WebSocketClient.ts +++ b/frontend/app/lib/agentsync/hooks/WebSocketClient.ts @@ -5,7 +5,7 @@ interface WebSocketMessage { export class WebSocketClient { private ws: WebSocket | null = null; - private messageHandlers: ((msg: WebSocketMessage) => void)[] = []; + private messageHandlers: Set<(msg: WebSocketMessage) => void> = new Set(); private reconnectAttempts = 0; private maxReconnectAttempts = 5; private reconnectTimeout: NodeJS.Timeout | null = null; @@ -128,13 +128,18 @@ export class WebSocketClient { this.ws = null; } - this.messageHandlers = []; + this.messageHandlers.clear(); this.messageQueue = []; this.isConnecting = false; this.reconnectAttempts = 0; console.debug("WebSocket client disconnected"); } + clearHandlers() { + console.debug("Clearing message handlers"); + this.messageHandlers.clear(); + } + send(msg: any) { if (this.isClosed) { console.debug("Cannot send message - client is closed"); @@ -159,9 +164,9 @@ export class WebSocketClient { } onMessage(handler: (msg: WebSocketMessage) => void) { - this.messageHandlers.push(handler); + this.messageHandlers.add(handler); return () => { - this.messageHandlers = this.messageHandlers.filter((h) => h !== handler); + this.messageHandlers.delete(handler); }; } } \ No newline at end of file