Skip to content

WebSocket channels

Live updates run over Phoenix channels on a single socket. Join the topics you care about; each pushes events as things change, so you never poll.

Frames use the Phoenix v2 format:

[join_ref, ref, topic, event, payload]

Channel activity

Run an action and watch which channels push, and in what order.

Channels
active_ordersactive_orders:{uid}
active_tradesactive_trades:{uid}
active_positionsactive_positions:{uid}
active_settlementsactive_settlements:{uid}
portfolioportfolio:{uid}
user_infouser_info:{uid}
market_updatesmarket_updatespublic
market_infomarket_infopublic

These carry your own activity and require an authenticated socket. Each one replies to phx_join and then pushes a snapshot: all_orders, all_trades, all_positions, summary and user_updated respectively. Every topic is suffixed with your user id, so you only ever receive your own data.

Channel Topic Pushes
Active orders active_orders:{user_id} new_open_order — order accepted, amended or filled. Also hosts cancel_on_disconnect.
Active trades active_trades:{user_id} Fills as your orders match.
Active positions active_positions:{user_id} new_positions — position opened, changed or closed.
Active settlements active_settlements:{user_id} new_settlements — a market you hold settles.
Portfolio portfolio:{user_id} Balance and exposure changes.
User info user_info:{user_id} user_updated — profile, limits and account state.

No authentication. These are the feeds behind the order book on the home page.

Channel Topic Pushes
Market updates market_updates create and updated. Deltas only — a payload carries id, ts and just the fields that changed (dsc, mp, opr, …), not the whole market.
Market info market_info Fuller market metadata: title, description, event linkage.