Fixing WebSocket Disconnects in Your Trading Bot
WebSocket disconnects are one of the most common reliability issues in production automated crypto trading systems. Your bot can appear to be running while silently operating on stale data after a quiet disconnect. Here is how to prevent and handle it.
Understanding Disconnects
Exchanges send periodic ping frames that require a pong response within a timeout window. If your code doesn't handle them, the exchange drops the connection. In Python's websockets library, ping/pong handling is automatic with ping_interval and ping_timeout parameters.
Heartbeat Detection
Even with ping/pong working, a feed can go "silent"—delivering no messages for an unusually long time. Track the last message timestamp and alert if no data arrives within 30 seconds in your websocket crypto trading bot python:
async def monitor_heartbeat():\n while True:\n if time.time() - last_message_time > 30:\n await reconnect()\n await asyncio.sleep(5)Reconnection Sequence
On disconnect: (1) log the event, (2) cancel pending tasks, (3) re-establish the WebSocket connection, (4) re-subscribe to all channels, (5) re-sync your local order book from REST. This full sequence keeps your crypto trading bot state consistent after any disconnect.