Skip to content

STXWebSocket

public sealed class STXWebSocket : IAsyncDisposable
var ws = client.CreateWebSocket(new STXWebSocketOptions { ... });
Property Default Meaning
UserId from GET /api/v1/me The id the account channels are keyed by
HeartbeatInterval 25 s Socket heartbeat; the server closes a socket silent for 60 s
ChannelPingInterval 30 s Channel ping on every joined topic; null turns it off
Reconnect true Reconnect after a drop
ReconnectPolicy 0.5 s doubling to 30 s, jitter, never gives up STXReconnectPolicy record: InitialBackoff, MaxBackoff, MaxAttempts, Jitter
OnReconnect none Func<Task> called after each reconnect and rejoin
JoinTimeout 10 s Time to wait for a join or command reply
QueueSize 10,000 Messages buffered per channel for reading; the oldest is dropped when full
Member Meaning
ConnectAsync() Opens the socket; joining connects too
DisposeAsync() Leaves every channel and closes the socket
Completion Completes when the socket is closed or gives up reconnecting
Connected, Reconnects State
Channels Joined channels by topic
GetUserIdAsync() Your user id

Each returns the joined channel and takes an optional Action<STXChannelMessage> onMessage and CancellationToken ct.

Method Topic On join
OrderbookAsync(marketIds) orderbook book pushes, each a full book
TickerAsync(sports, competitions) ticker no snapshot
TradesAsync(marketIds, eventIds) trades no snapshot
MarketsAsync(ruleFilters, messageTypes) markets no snapshot; cents converted to dollars
MarketStatsAsync(marketIds, range) market_stats the series in Reply
MarketUpdatesAsync(watch) market_updates nothing until you watch
MarketAsync(marketId) market:<id> the market and its book in Reply
OrdersAsync(marketIds, cancelOnDisconnect, pingTimeout) orders:<user_id> all_orders
FillsAsync(marketIds) fills:<user_id> all_trades
PositionsAsync(marketIds) positions:<user_id> all_positions
SettlementsAsync(marketIds) settlements:<user_id> no snapshot
BalancesAsync(accountId) balances:<user_id> balances
AccountAsync(marketIds) account:<user_id> all four snapshots
UserInfoAsync() user_info:<user_id> user_updated
AccountViewAsync(marketIds, accountId, onChange, snapshotTimeout, keepFlatPositions, maxFills) four channels returns an STXAccountView
RfqAsync() rfq:<user_id> returns an STXRfqChannel; see Combos
ComboQuoteAsync() combo_quote:<user_id> returns an STXComboQuoteChannel
JoinAsync(topic, payload) any

A topic can be joined once per socket; joining it again throws STXChannelException.