| from fastapi import WebSocket, WebSocketDisconnect |
| from typing import Dict, Set |
| import json |
| import asyncio |
|
|
| class CollaborationManager: |
| def __init__(self): |
| self.active_connections: Dict[str, Set[WebSocket]] = {} |
| |
| async def connect(self, session_id: str, websocket: WebSocket): |
| await websocket.accept() |
| if session_id not in self.active_connections: |
| self.active_connections[session_id] = set() |
| self.active_connections[session_id].add(websocket) |
| |
| async def disconnect(self, session_id: str, websocket: WebSocket): |
| self.active_connections[session_id].remove(websocket) |
| |
| async def broadcast(self, session_id: str, message: dict): |
| if session_id in self.active_connections: |
| for connection in self.active_connections[session_id]: |
| await connection.send_json(message) |
|
|
| collaboration_manager = CollaborationManager() |
|
|