// WebSocket communication module export class WebSocketManager { constructor(onMessage, onStatusChange) { this.websocket = null; this.onMessage = onMessage; this.onStatusChange = onStatusChange; } async connect() { const protocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:'; const wsUrl = `${protocol}//${window.location.host}/ws`; try { this.websocket = new WebSocket(wsUrl); this.websocket.onopen = () => { this.onStatusChange('connected'); }; this.websocket.onclose = () => { this.onStatusChange('disconnected'); // Reconnect after 5 seconds setTimeout(() => this.connect(), 5000); }; this.websocket.onerror = (error) => { console.error('WebSocket error:', error); this.onStatusChange('disconnected'); }; this.websocket.onmessage = (event) => { try { const message = JSON.parse(event.data); this.onMessage(message); } catch (error) { console.error('Failed to parse WebSocket message:', error); } }; } catch (error) { console.error('WebSocket connection failed:', error); this.onStatusChange('disconnected'); } } disconnect() { if (this.websocket) { this.websocket.close(); this.websocket = null; } } }