diff --git a/backend/app/main.py b/backend/app/main.py index 487343c..eae0f69 100755 --- a/backend/app/main.py +++ b/backend/app/main.py @@ -238,10 +238,20 @@ async def websocket_analyze(websocket: WebSocket): except WebSocketDisconnect: logger.info(f"[MAIN] Client {client_id} disconnected") manager.disconnect(client_id) + except RuntimeError as e: + # Client disconnected mid-analysis (e.g. navigated away before result arrived) + if "not connected" in str(e).lower() or "websocket" in str(e).lower(): + logger.info(f"[MAIN] Client {client_id} disconnected before result was sent") + else: + logger.error(f"[MAIN] RuntimeError for client {client_id}: {str(e)}") + manager.disconnect(client_id) except Exception as e: logger.error(f"[MAIN] Error for client {client_id}: {str(e)}") - await manager.send_message(client_id, { - "type": "error", - "message": str(e) - }) + try: + await manager.send_message(client_id, { + "type": "error", + "message": str(e) + }) + except Exception: + pass manager.disconnect(client_id)