from fastapi import FastAPI, WebSocket, WebSocketDisconnect, Request, APIRouter from typing import List from pydantic import BaseModel router = APIRouter() # 存储 Flask 前端的 WebSocket 连接 flask_clients: List[WebSocket] = [] @router.websocket("/ws/admin") async def admin_websocket_endpoint(websocket: WebSocket): await websocket.accept() flask_clients.append(websocket) try: while True: # 保持连接开放 await websocket.receive_text() except WebSocketDisconnect: flask_clients.remove(websocket) class CallRequest(BaseModel): table_name: str @router.post("/call") async def receive_call(request: CallRequest): table_name = request.table_name # 这里简单假设桌号就是桌子名称,实际中可按需转换 table_number = table_name for client in flask_clients: try: await client.send_text(table_number) except Exception as e: print(f"Error sending message to client: {e}") return {"message": "Call received and forwarded"}