27 lines
846 B
Python
27 lines
846 B
Python
"""WebSocket 路由处理器。
|
||
|
||
当前实现仅用于维持连接并将连接注册到 Broadcaster,便于服务端主动推送消息。
|
||
"""
|
||
|
||
from __future__ import annotations
|
||
|
||
from fastapi import WebSocket, WebSocketDisconnect
|
||
|
||
from backend.services.broadcaster import Broadcaster
|
||
|
||
|
||
async def websocket_handler(ws: WebSocket, broadcaster: Broadcaster) -> None:
|
||
"""WebSocket 连接处理:接入、注册、保持心跳、断开清理。"""
|
||
await ws.accept()
|
||
await broadcaster.add(ws)
|
||
logger.info("WebSocket 连接接入:%s", ws.client)
|
||
try:
|
||
while True:
|
||
await ws.receive_text()
|
||
except WebSocketDisconnect:
|
||
# 客户端正常断开连接,无需打印堆栈信息
|
||
pass
|
||
finally:
|
||
await broadcaster.remove(ws)
|
||
logger.info("WebSocket 连接断开:%s", ws.client)
|