> ## 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.

# Why Migrate

> Limitations of the legacy Ably WebSocket API and the improvements Centrifugo provides

<Info>
  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](/api-reference/centrifugo-initialization) directly.
</Info>

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 connection | 200                                                        | 512                                                        |
| Throughput per channel  | 200 msg/sec (enforced)                                     | No artificial cap                                          |
| Delivery guarantee      | Partial — time-based rewind only                           | Exact — message IDs + server-side history                  |
| Gap recovery            | Time-window rewind (imprecise, risk of gaps or duplicates) | Precise history replay from last message ID (5-min window) |
| Latency                 | Baseline                                                   | 16–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](/developers/real-time#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:

| Channel                      | Latency 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             |

***

<Card title="Migration Guide →" icon="arrow-right" href="/api-reference/centrifugo-migration">
  Steps required to move from Ably to Centrifugo.
</Card>
