(self, user_id: str, websocket: WebSocket)
| 17 | self.log = log |
| 18 | |
| 19 | async def connect(self, user_id: str, websocket: WebSocket) -> None: |
| 20 | if len(self._connections) >= self.MAX_CONNECTIONS: |
| 21 | await websocket.close(code=status.WS_1008_POLICY_VIOLATION) # Connection limit exceeded |
| 22 | self.log.error(f"🥕 WebSocket connect: user {user_id}, connection limit exceeded") |
| 23 | return |
| 24 | await websocket.accept() |
| 25 | async with self._lock: |
| 26 | lock = asyncio.Lock() |
| 27 | self._connections.setdefault(user_id, []).append((websocket, lock)) |
| 28 | self.log.info(f"🍏 WebSocket connected: {user_id} (total {len(self._connections.get(user_id, []))})") |
| 29 | |
| 30 | async def disconnect(self, user_id: str, websocket: WebSocket) -> None: |
| 31 | async with self._lock: |
no test coverage detected