2025-03-10 08:35:19 +08:00

37 lines
1.0 KiB
Python

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"}