From 076dc1659efed900205f035155ef00d26cf0daaa Mon Sep 17 00:00:00 2001 From: Aditya Pulipaka Date: Sun, 19 Oct 2025 14:27:37 -0500 Subject: [PATCH] improvement to websocket performance --- scripts/simulate_pi_websocket.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/scripts/simulate_pi_websocket.py b/scripts/simulate_pi_websocket.py index 45428dc..ea60606 100644 --- a/scripts/simulate_pi_websocket.py +++ b/scripts/simulate_pi_websocket.py @@ -464,7 +464,13 @@ class PiSimulator: logger.info(f"Connecting to WebSocket: {self.ws_url}") try: - async with websockets.connect(self.ws_url) as websocket: + # Configure WebSocket with longer ping timeout and interval + async with websockets.connect( + self.ws_url, + ping_interval=20, # Send ping every 20 seconds + ping_timeout=60, # Wait up to 60 seconds for pong response + close_timeout=10 # Timeout for close handshake + ) as websocket: logger.info("WebSocket connected!") # Wait for welcome message @@ -671,6 +677,15 @@ class PiSimulator: # Send disconnect message await websocket.send(json.dumps({"type": "disconnect"})) + except websockets.exceptions.ConnectionClosedError as e: + if e.code == 1011: + logger.error(f"WebSocket keepalive timeout (1011): Connection lost due to ping/pong failure") + logger.error("Possible causes:") + logger.error(" - Server took too long to respond (strategy generation > 60s)") + logger.error(" - Network latency or congestion") + logger.error(" - Server overloaded or unresponsive") + else: + logger.error(f"WebSocket connection closed: {e} (code: {e.code})") except websockets.exceptions.WebSocketException as e: logger.error(f"WebSocket error: {e}") logger.error("Is the AI Intelligence Layer running on port 9000?")