Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.sx.bet/llms.txt

Use this file to discover all available pages before exploring further.

This page is only relevant if you are currently using the legacy Ably WebSocket API. If you are starting a new integration, use the Centrifugo-based API directly.
The legacy Ably WebSocket API had three core limitations that motivated the switch to Centrifugo: a hard cap of 200 channels per connection that required clients to shard subscriptions, a 200 msg/sec per-channel throughput limit that silently dropped messages on active markets, and imprecise gap recovery based on time-window rewinds rather than exact message IDs. Centrifugo removes all three constraints — 512 channels per connection, no artificial throughput ceiling, and server-side history with exact message ID replay. It also delivers measurably lower latency across every channel.
Ably (old)Centrifugo (new)
Channels per connection200512
Throughput per channel200 msg/sec (enforced)No artificial cap
Delivery guaranteePartial — time-based rewind onlyExact — message IDs + server-side history
Gap recoveryTime-window rewind (imprecise, risk of gaps or duplicates)Precise history replay from last message ID (5-min window)
LatencyBaseline16–127 ms lower end-to-end latency across channels

Channel capacity

Ably: 200 channels per connection required clients to shard subscriptions across multiple connections. Centrifugo: 512 channels per connection. A single connection handles all subscriptions without sharding.

Throughput rate limits

Ably: Ably enforced a 200 msg/sec rate limit per channel server-side. On active markets this limit was regularly hit, causing messages to be dropped silently on the client. To work around this, channel design was constrained to targeted, per-market subscriptions rather than broader firehose patterns — trading flexibility for staying under the cap. Centrifugo: No per-channel throughput ceiling. Capacity is bounded by infrastructure, not an enforced message rate limit.

Delivery guarantees

Ably: The rewind parameter replayed the last N seconds of channel history to bridge the REST-to-subscribe gap. Without message IDs, delivery was imprecise — no guarantee against gaps or duplicates, and no way to verify completeness. Centrifugo: Centrifugo assigns a message ID to every publication and maintains server-side history per channel. The snapshot + subscribe pattern uses this to eliminate the REST-to-subscribe race condition.

Gap recovery

Ably: Reconnects relied on the same time-based rewind, with the same precision problem — no guarantee of exactly-once delivery across the reconnect boundary. Centrifugo: Centrifugo replays missed messages automatically from server-side history within a 5-minute recovery window.

Latency

Measured end-to-end across production channels, Centrifugo delivers messages significantly faster:
ChannelLatency improvement
main_line~127 ms
best_odds~120 ms
order_book~100 ms
markets~104 ms
recent_trades_consolidated~26 ms
fixture_live_scores~23 ms
recent_trades~21 ms
fixtures~19 ms
activity_feed~16 ms

Migration Guide →

Steps required to move from Ably to Centrifugo.
Last modified on March 27, 2026