hpce-dev / ws /manager.py
μ΄λ™ν˜„
[DOCS] λ°±μ—”λ“œ μ „λ°˜ docstring 보강 (Google μŠ€νƒ€μΌ Args/Returns/Raises)
58debbc
Raw
History Blame Contribute Delete
1.22 kB
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()