diff --git a/navi/api/websocket.py b/navi/api/websocket.py index 4a17c1e..13d2145 100644 --- a/navi/api/websocket.py +++ b/navi/api/websocket.py @@ -297,20 +297,20 @@ # isn't stuck as "running" forever. orchestrator.clear_run(session_id) raise - - await websocket.send_json({"type": "stream_start"}) - connected = await _stream_to_client(websocket, queue) - run.unsubscribe(queue) - queue = None - current_run = None - - if not connected: - break # avoid calling receive_text() on a dead socket finally: _uid_var.reset(uid_token) _role_var.reset(role_token) _uinfo_var.reset(uinfo_token) + await websocket.send_json({"type": "stream_start"}) + connected = await _stream_to_client(websocket, queue) + run.unsubscribe(queue) + queue = None + current_run = None + + if not connected: + break # avoid calling receive_text() on a dead socket + except (WebSocketDisconnect, RuntimeError): log.info("ws.disconnected", session_id=session_id) finally: