Realtime
WebSocket, SSE et NATS auto-négociés. Presence, replay, ordering garanti, backpressure. 1M connexions par POP, fanout sub-15ms p99 entre régions.
7 min de lecture·Niveau intermédiaire·Révisé le 15 avr. 2026
Le service aura-realtime diffuse trois types d'événements : CDC Postgres (INSERT/UPDATE/DELETE filtrés par RLS), Presence (qui est en ligne) et Broadcast (custom events indépendants de la base). Tous passent par le même SDK via .channel().
Un canal est identifié par un nom arbitraire (sensors:live, doc:42, room:abc). Les messages sont ordonnés par canal, dédupliqués par message_id, et garantis exactly-once à l'intérieur d'un même canal.
Info
Les abonnements héritent des policies RLSde la base. Un client ne peut s'abonner qu'aux changements qu'il peut lire — le filtre est évalué côté serveur sur le WAL, pas côté client.
Le SDK maintient une seule connexion TCP multiplexée entre le client et le POP le plus proche. Vous pouvez ouvrir 100 canaux sans ouvrir 100 sockets.
Astuce
Les événements sont partitionnés par hash consistant. Un canal vit toujours sur le même POP, mais sa réplication vers les autres POPs est garantie en moins de 15ms p99.
Nettoyage obligatoire
Appelez toujours
channel.unsubscribe() au démontage. En React, faites-le dans le cleanup de useEffect — le hook useChannel ci-dessus le fait pour vous.✓ GARANTI
- Ordering par canal
- Exactly-once par
message_iddans un canal - Fanout p99 < 15ms cross-region
- Reconnexion auto avec replay 60s
- Backpressure explicite (drop policy configurable)
✗ NON GARANTI
- Ordering cross-canal
- Exactly-once cross-canal (at-least-once)
- Latence sub-ms (< 15ms p99 est notre plancher)
- Replay au-delà de 60s (utilisez un journal Postgres)
Dernière mise à jour · 15 avr. 2026