Use the WebSocket instead of polling. One signed connection multiplexes the
orderbook, public tape, your private feed, oracle ticks, and round lifecycle.
Handshake
Sign a fixed canonical string (empty body):
Send the usual DX-ACCESS-* headers on the upgrade. A bad signature is 401.
There is no anonymous WebSocket access — even “public” channels ride an
authenticated session.
Subscribe
Global channels (oracle, rounds) and the private user channel omit
market_ids. Reply:
Each channel gets its own sid. Data frames carry { sid, seq, type, msg }
with seq contiguous from 1 per subscription.
A gap in seq means you lost data. Public channels have no replay. Call
update_subscription with action: "get_snapshot" to re-baseline without
dropping the subscription.
Complete runnable example
Next