20 lines
499 B
Python
20 lines
499 B
Python
|
|
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)
|
||
|
|
|