From 2bd7cd910296aa5688be17829d0282e518698230 Mon Sep 17 00:00:00 2001 From: "I. Alcaraz Salazar" Date: Sun, 15 Feb 2026 09:05:18 +0000 Subject: [PATCH] feat: add WebSocket router for real-time broadcast updates Co-Authored-By: Claude Opus 4.6 --- backend/routers/ws.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 backend/routers/ws.py diff --git a/backend/routers/ws.py b/backend/routers/ws.py new file mode 100644 index 0000000..7a629f9 --- /dev/null +++ b/backend/routers/ws.py @@ -0,0 +1,30 @@ +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)