import asyncio import json from fastapi import APIRouter, WebSocket, WebSocketDisconnect router = APIRouter() connected_clients: list[WebSocket] = [] @router.websocket("/ws") async def websocket_endpoint(ws: WebSocket): await ws.accept() connected_clients.append(ws) try: while True: await ws.receive_text() except WebSocketDisconnect: connected_clients.remove(ws) async def broadcast(event_type: str, data: dict): message = json.dumps({"type": event_type, "data": data}) disconnected = [] for ws in connected_clients: try: await ws.send_text(message) except Exception: disconnected.append(ws) for ws in disconnected: connected_clients.remove(ws)