Fixed websocket bug

This commit is contained in:
Martin Ziegler
2025-11-30 09:02:17 +01:00
parent 0ff94ebb12
commit b642644cbb
5 changed files with 30 additions and 11 deletions
+8 -2
View File
@@ -1,16 +1,19 @@
import logging
from fastapi import APIRouter, WebSocket, WebSocketDisconnect
from backend.app.core.websocket import ws_manager
from backend.app.services.printer_manager import printer_manager, printer_state_to_dict
logger = logging.getLogger(__name__)
router = APIRouter()
@router.websocket("/ws")
async def websocket_endpoint(websocket: WebSocket):
"""WebSocket endpoint for real-time updates."""
logger.info("WebSocket client connecting...")
await ws_manager.connect(websocket)
logger.info("WebSocket client connected")
try:
# Send initial status of all printers
@@ -21,6 +24,7 @@ async def websocket_endpoint(websocket: WebSocket):
"printer_id": printer_id,
"data": printer_state_to_dict(state),
})
logger.info(f"Sent initial status for {len(statuses)} printers")
# Keep connection alive and handle incoming messages
while True:
@@ -43,6 +47,8 @@ async def websocket_endpoint(websocket: WebSocket):
})
except WebSocketDisconnect:
logger.info("WebSocket client disconnected normally")
await ws_manager.disconnect(websocket)
except Exception:
except Exception as e:
logger.error(f"WebSocket error: {e}", exc_info=True)
await ws_manager.disconnect(websocket)