SmartEDT/backend/api/ws.py

20 lines
499 B
Python
Raw Normal View History

from __future__ import annotations
from fastapi import WebSocket, WebSocketDisconnect
from backend.services.broadcaster import Broadcaster
async def websocket_handler(ws: WebSocket, broadcaster: Broadcaster) -> None:
await ws.accept()
await broadcaster.add(ws)
try:
while True:
await ws.receive_text()
except WebSocketDisconnect:
# 客户端正常断开连接,无需打印堆栈信息
pass
finally:
await broadcaster.remove(ws)