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