36 lines
1.0 KiB
Python
Executable File
36 lines
1.0 KiB
Python
Executable File
"""
|
|
Endpoint WebSocket pour notifications temps réel
|
|
"""
|
|
from fastapi import APIRouter, WebSocket, WebSocketDisconnect
|
|
from backend.app.services.websocket import ws_manager
|
|
|
|
router = APIRouter(tags=["WebSocket"])
|
|
|
|
|
|
@router.websocket("/ws")
|
|
async def websocket_endpoint(websocket: WebSocket):
|
|
"""
|
|
Endpoint WebSocket pour notifications temps réel
|
|
|
|
Args:
|
|
websocket: Connexion WebSocket
|
|
"""
|
|
await ws_manager.connect(websocket)
|
|
|
|
try:
|
|
# Boucle de réception (keep-alive)
|
|
while True:
|
|
# Recevoir des messages du client (heartbeat)
|
|
data = await websocket.receive_text()
|
|
|
|
# On peut gérer des commandes du client ici si nécessaire
|
|
# Pour l'instant, on fait juste un echo pour keep-alive
|
|
if data == "ping":
|
|
await ws_manager.send_personal_message("pong", websocket)
|
|
|
|
except WebSocketDisconnect:
|
|
ws_manager.disconnect(websocket)
|
|
except Exception as e:
|
|
print(f"Erreur WebSocket: {e}")
|
|
ws_manager.disconnect(websocket)
|