CI / backend (pull_request) Canceled after 0s
CI / shell (pull_request) Canceled after 0s
CI / frontend (pull_request) Canceled after 0s
CI / arm64-smoke (pull_request) Canceled after 0s
CI / backend (push) Canceled after 0s
CI / shell (push) Canceled after 0s
CI / frontend (push) Canceled after 0s
CI / arm64-smoke (push) Canceled after 0s
28 lines
783 B
Python
28 lines
783 B
Python
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
|