PRODPlateforme BaaS souveraine européenneOuvrir le tableau de bord →
ACCUEIL/PRODUITS/REALTIME
REALTIME · NATIVE SYNC

Synchronisation, présence,
diffusé.

Auto-negotiated WebSocket, SSE, and NATS. Presence, replay, guaranteed ordering, explicit backpressure. 1M connections per POP, sub-15ms p99 fanout.

14ms
P99 FANOUT
1M
CNX/POP
3
TRANSPORTS
app/dashboard/live.tsxTYPESCRIPT
const channel = aura.channel('sensors:live')
channel
.on('postgres_changes', {
event: 'INSERT',
schema: 'public',
table: 'sensors',
filter: 'tenant_id=eq.${tid}',
}, ({ new: row }) => render(row))
.subscribe()
// Auto-negotiates WebSocket → SSE → NATS based on network
#
Ensemble de fonctionnalités

De la synchronisation primitive au multijoueur en temps réel

3 auto-negotiated transports

WebSocket first, then SSE, then server-side NATS. The client selects the optimal protocol based on network conditions.

WS · SSE · NATS

Presence API

Who is currently in the room, custom state, join/leave events. Consistent hashing for cross-region state reconciliation.

< 20ms SYNC

Multiplex N channels

Open 1,000 channels over a single TCP connection. Atomic subscribe/unsubscribe with zero extra connection overhead.

N CHANNELS · 1 TCP

Backpressure & ordering

Guaranteed ordering per channel, configurable client buffer, explicit drop policy. No silent duplications.

EXACTLY-ONCE PER-KEY

Event replay

Replays the last N events upon reconnection. Configured per channel, default retention of 100 messages or 60 seconds.

REPLAY WINDOW · 60s

Collab cursors

Native collaborative cursor primitives for multi-user apps. Server-side adaptive throttling, client-side interpolation.

60 FPS · THROTTLED
#
Flux en direct

Inspection du flux de production en temps réel

Aperçu d'un flux de production anonymisé. Chaque événement est dédupliqué et classé par canal, diffusé en moins de 15 ms à tous les abonnés actifs.

STREAM · eu-west-3 · channel_id = LIVE_SAMPLE
EN DIRECTVENTILATION · 9 msCLIENTS · 12 418
14:32:08.412INSERTsensors:live·{ device_id: "dvc_9f2a", temp: 24.7 }
14:32:08.510PRESENCEdoc:42·user_j8k joined · cursor@(340, 120)
14:32:09.001UPDATEorders:live·{ id: "ord_77c", status: "shipped" }
14:32:09.188BROADCASTchat:general·{ event: "typing", user: "ci_42" }
14:32:09.440INSERTsensors:live·{ device_id: "dvc_4a1", temp: 23.9 }
14:32:09.702PRESENCEdoc:42·user_n3e left
14:32:10.020DELETEsessions:live·{ session_id: "sess_0x4" }
14:32:10.155BROADCASTgame:room-8·{ event: "move", coords: [12, 44] }
#
Performances

Des benchmarks vérifiés, pas de fioritures marketing

14ms
P99 FANOUT
Median 6ms — 1M concurrent clients, 12 active regions
1M
CONNECTIONS / POP
Per point of presence, standard edition
256KB
MAX MSG
Per message — automatic chunking beyond
#
Comparaison

Aurabase · Supabase · Habilement

CaractéristiqueAurabaseSupabaseHabilement
TransportsWS · SSE · NATSWS onlyWS · Binary
Native presenceIncludedIncludedIncluded
Postgres CDCIncludedIncludedNo
Event replayConfigurableNoYes (Ably)
MultiplexingUnlimited100 channels200 channels
BillingConnection × minConnection × hrMessage × event
Open sourceApache 2.0MITProprietary
#
FAQ

Questions fréquemment posées

What is the difference between WebSocket, SSE, and NATS?+
WebSocket est bidirectionnel et notre transport par défaut. SSE est un serveur à client unidirectionnel (utile derrière les proxys d'entreprise restrictifs). NATS est le transport interservices au sein de notre infrastructure : sur un VPC Aurabase, vous pouvez connecter votre travailleur directement à NATS pour une latence de processus à processus inférieure à la milliseconde.
Are messages guaranteed exactly-once?+
Exactement une fois par clé au sein d'un canal (classement et déduplication via message_id côté serveur). Le cross-canal est au moins une fois : le SDK expose vu_ids pour dédoublonner côté client si nécessaire.
How do you scale beyond 1M concurrent connections?+
Ajoutez des POP. Chaque POP accepte 1 million de connexions. L'état de présence est partitionné à l'aide d'un hachage cohérent et répliqué sur 3 copies.
Can we filter Postgres CDC changes server-side?+
Oui. filter: 'tenant_id=eq.$1' est évalué côté serveur par rapport au WAL, de sorte que les clients ne reçoivent que les modifications qui les concernent. Les politiques RLS de Postgres s'appliquent également aux événements en temps réel.
What about offline mode?+
Le SDK maintient un tampon local (IndexedDB/AsyncStorage) et relit les intentions lors de la reconnexion. Les conflits sont résolus via des horloges vectorielles optionnelles ou des gains de dernière écriture configurables par canal.
What is the real pricing model?+
Forfait gratuit : 100 connexions simultanées × 1h/jour. Forfait Pro : 100 000 connexions × heures de connexion totales dans le mois à 0,015 € par 1 000 heures de connexion. Pas de facturation par message dans le niveau Pro.
TEMPS RÉEL ACTIVÉ PAR DÉFAUT

Ouvrez une chaîne et écoutez la production en direct.

Aucune configuration requise. Un canal, trois lignes de code, un tableau de bord vivant.

Aucune carte de crédit requise · 500 Mo gratuits · 50 000 MAU