from __future__ import annotations import asyncio from fastapi import APIRouter, WebSocket, WebSocketDisconnect from app.core.dependencies import app_state websocket_router = APIRouter() @websocket_router.websocket("/ws/live") async def live_socket(websocket: WebSocket) -> None: await websocket.accept() try: while True: await websocket.send_json( { "engine": app_state.engine.snapshot(), "telemetry": app_state.telemetry.snapshot(len(app_state.triggers.queue)), "bpm": app_state.bpm.snapshot(), "queue": app_state.triggers.snapshot(), } ) await asyncio.sleep(0.1) except WebSocketDisconnect: return