This commit is contained in:
el 2025-04-01 16:33:54 +02:00
commit d05799fe65
60 changed files with 7078 additions and 0 deletions

View file

@ -0,0 +1,31 @@
from fastapi import APIRouter, WebSocket, WebSocketDisconnect
from app.services.logs_service import logs_service
import asyncio
router = APIRouter()
@router.websocket("/ws")
async def websocket_endpoint(websocket: WebSocket):
"""Endpoint WebSocket pour recevoir les logs en temps réel."""
await logs_service.connect(websocket)
try:
while True:
data = await websocket.receive_text()
# Ici, nous pourrions ajouter la logique pour filtrer les logs
# en fonction des préférences du client
await logs_service.broadcast_log(data)
except WebSocketDisconnect:
logs_service.disconnect(websocket)
@router.websocket("/ws/{container_id}")
async def container_logs_websocket(websocket: WebSocket, container_id: str):
"""Endpoint WebSocket pour recevoir les logs d'un conteneur spécifique."""
await logs_service.connect(websocket, container_id)
try:
async for log in logs_service.get_container_logs(container_id):
await websocket.send_text(log)
except WebSocketDisconnect:
logs_service.disconnect(websocket, container_id)
except Exception as e:
await websocket.send_text(f"Error: {str(e)}")
logs_service.disconnect(websocket, container_id)