| from __future__ import annotations |
| """ |
| WebSocket Connection Manager |
| """ |
| from fastapi import WebSocket |
|
|
|
|
| class ConnectionManager: |
| """μΈμ
id β νμ± WebSocket μ°κ²° 보κ΄.""" |
|
|
| def __init__(self) -> None: |
| """λΉ μ°κ²° λ§΅(session_id β WebSocket)μΌλ‘ μ΄κΈ°ννλ€.""" |
| self._connections: dict[str, WebSocket] = {} |
|
|
| async def connect(self, session_id: str, ws: WebSocket) -> None: |
| """μ°κ²°μ μλ½ν λ€ μΈμ
μ λ±λ‘νλ€. |
| |
| Args: |
| session_id: λ±λ‘ν μΈμ
ID. |
| ws: μλ½ν WebSocket μ°κ²°. |
| """ |
| await ws.accept() |
| self._connections[session_id] = ws |
|
|
| def disconnect(self, session_id: str) -> None: |
| """μΈμ
μ μ°κ²°μ ν΄μ νλ€. |
| |
| Args: |
| session_id: ν΄μ ν μΈμ
ID. |
| """ |
| self._connections.pop(session_id, None) |
|
|
| def get(self, session_id: str) -> WebSocket | None: |
| """μΈμ
μ νμ± μ°κ²°μ μ‘°ννλ€. |
| |
| Args: |
| session_id: μ‘°νν μΈμ
ID. |
| |
| Returns: |
| λ±λ‘λ WebSocket μ°κ²°, μμΌλ©΄ None. |
| """ |
| return self._connections.get(session_id) |
|
|
|
|
| manager = ConnectionManager() |
|
|