12345678910111213141516171819202122232425262728293031 |
- from fastapi import APIRouter,WebSocket
- from database import SessionLocal
- from models import DeviceData
- from pydantic import BaseModel
- from typing import List
- from udp_server import web_clients
- router = APIRouter()
- class DeviceStatus(BaseModel):
- dtu_id: str
- device_id: str
- status: str
- timestamp: str
- @router.get("/devices", response_model=List[DeviceStatus])
- def get_all_data():
- db = SessionLocal()
- data = db.query(DeviceData).order_by(DeviceData.timestamp.desc()).limit(100).all()
- db.close()
- return data
- @router.websocket("/ws")
- async def websocket_endpoint(websocket: WebSocket):
- await websocket.accept()
- web_clients.add(websocket)
- try:
- while True:
- await websocket.receive_text() #保持连接活跃
- except:
- web_clients.discard(websocket)
|