Files
Dashboard-CAS/backend/routers/ws.py

31 lines
761 B
Python

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)