fix: drop stalled browser websocket clients

This commit is contained in:
Erik 2026-03-13 16:55:17 +01:00
parent a3c3d0286e
commit bb89aaa6bc

View file

@ -2005,11 +2005,16 @@ async def _broadcast_to_browser_clients(snapshot: dict):
for ws in list(browser_conns):
try:
await ws.send_json(data)
await asyncio.wait_for(ws.send_json(data), timeout=1.0)
except (WebSocketDisconnect, RuntimeError, ConnectionAbortedError) as e:
# Collect disconnected clients for cleanup
disconnected_clients.append(ws)
logger.debug(f"Detected disconnected browser client: {e}")
except asyncio.TimeoutError:
disconnected_clients.append(ws)
logger.warning(
"Timed out broadcasting to browser client; removing stale connection"
)
except Exception as e:
# Handle any other unexpected errors
disconnected_clients.append(ws)