File size: 934 Bytes
bd91486 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | 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()
|