from fastapi import WebSocket class ConnectionManager: def __init__(self): self.active: list[WebSocket] = [] async def connect(self, ws: WebSocket) -> None: await ws.accept() self.active.append(ws) def disconnect(self, ws: WebSocket) -> None: self.active.discard(ws) if hasattr(self.active, "discard") else None if ws in self.active: self.active.remove(ws) async def broadcast(self, message: dict) -> None: dead = [] for ws in self.active: try: await ws.send_json(message) except Exception: dead.append(ws) for ws in dead: self.disconnect(ws) manager = ConnectionManager()