diff --git a/lib/src/websocket_manager.dart b/lib/src/websocket_manager.dart index b0d3643..f5f85ae 100644 --- a/lib/src/websocket_manager.dart +++ b/lib/src/websocket_manager.dart @@ -78,6 +78,8 @@ class WebSocketManager { 'ws://${host.replaceFirst(RegExp(r'^https?://'), '')}/ws?clientId=$clientId'; _wsChannel = WebSocketChannel.connect(Uri.parse(wsUrl)); + print('WebSocket connecting to $wsUrl'); + _wsChannel!.stream.listen((message) { final jsonData = jsonDecode(message); @@ -125,11 +127,26 @@ class WebSocketManager { } }, onError: (error) { print('WebSocket error: $error'); + _reconnect(); }, onDone: () { print('WebSocket connection closed'); + _reconnect(); }); } + /// Reconnects the WebSocket with a delay + Future _reconnect() async { + print('Attempting to reconnect WebSocket in 5 seconds...'); + await Future.delayed(Duration(seconds: 5)); + try { + await connect(); + print('WebSocket reconnected successfully'); + } catch (e) { + print('WebSocket reconnection failed: $e'); + _reconnect(); // Retry again if reconnection fails + } + } + /// Attempts to create a ProgressEvent from a WebSocketEvent void _tryCreateProgressEvent(WebSocketEvent event) { WebSocketEventHandler.tryCreateProgressEvent( @@ -170,6 +187,7 @@ class WebSocketManager { /// Closes the WebSocket connection and cleans up resources void dispose() { + print('Disposing WebSocketManager...'); _wsChannel?.sink.close(); _progressController.close(); _eventController.close();