Overview
TheWebSocketClient provides real-time streaming of orderbook updates and price data over a persistent WebSocket connection. It supports automatic reconnection and event-driven message handling via decorators.
Setup
Event handlers
Register handlers for specific events using the@ws_client.on() decorator:
Available events
OraclePriceData fields: marketAddress (optional), marketSlug, timestamp (unix ms), value (float).
Subscribing to markets
After connecting, subscribe to specific markets to receive updates:subscribe() method takes two arguments:
The server answers every
subscribe_market_prices call, first or repeat, with one orderbookUpdate per CLOB slug carrying the full current book, including books with empty bids and asks. You do not need a REST call to seed local state. See Initial snapshot.Authenticated subscriptions
Thesubscribe_positions and subscribe_order_events channels are per-account and require authentication. Pass hmac_credentials to the config — the SDK signs the WebSocket handshake automatically (no manual headers needed). This is the same flow as the TypeScript SDK; see Authentication to generate a token.
Positions
Subscribe to real-time updates when your positions change:Order events
Subscribe to your CLOB order lifecycle and settlement events. This channel is per-account and takes no payload:Authenticated
subscribe() calls raise ValueError if no hmac_credentials is set. Auth failures surface on the exception event. See the WebSocket Events reference for the full orderEvent payload shapes (source OME vs SETTLEMENT, and type values).Auto-reconnect
Whenauto_reconnect is enabled (the default), the client automatically reconnects after a disconnection:
- The connection drops (network issue, server restart, etc.)
- The client waits
reconnect_delayseconds - The client establishes a new connection
- The
connectevent fires again, so your subscription logic re-executes
Place your
subscribe() calls inside the connect handler to ensure subscriptions are restored after every reconnection.