Skip to main content
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.