diff --git a/web/src/composables/useWebSocket.ts b/web/src/composables/useWebSocket.ts index c21d9008..77a7df8c 100644 --- a/web/src/composables/useWebSocket.ts +++ b/web/src/composables/useWebSocket.ts @@ -70,6 +70,11 @@ class WebSocketManager { this.ws.onopen = () => { console.log('[WebSocket] Connected successfully') + // Cancel any pending reconnect timer — we're already connected + if (this.reconnectTimeout) { + clearTimeout(this.reconnectTimeout) + this.reconnectTimeout = null + } this.isConnected.value = true this.isAuthenticated.value = false // Wait for 'connected' message from server this.reconnectAttempts = 0 // Reset reconnection counter @@ -149,8 +154,8 @@ class WebSocketManager { } else { console.log('[WebSocket] Queuing message (not connected yet):', message.type, '- Queue size:', this.messageQueue.length + 1) this.messageQueue.push(message) - // Trigger reconnection if not already in progress - if (this.token && !this.reconnectTimeout) { + // Only schedule reconnect if socket is CLOSED/undefined — not when it's still CONNECTING + if (this.token && !this.reconnectTimeout && this.ws?.readyState !== WebSocket.CONNECTING) { this.scheduleReconnect() } }