Pub/sub hébergé via WebSocket. Abonnez-vous, publiez, passez à l'échelle.
Live chat, presence, in-app notifications, real-time dashboards, without running the WebSocket infrastructure yourself. Built on the same technology that ran Pusher Channels for a decade. Same auth, same idempotency, same webhook contract as every other Bird channel.
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
// On your server: publish an event to a channel.
const { data, error } = await bird.realtime.publish({
channel: "orders:BRD-49217",
event: "order.shipped",
data: { status: "shipped", eta: "Thursday, May 22" },
}).safe();
// In your client: subscribe and receive it live.
const channel = bird.realtime.subscribe("orders:BRD-49217");
channel.on("order.shipped", (event) => render(event.data));
if (error) throw error;
console.log(data.id);
// → "evt_2nQ81oP3..."
5 minutes entre npm install et le premier événement
Publiez votre premier événement dans le langage que vous utilisez déjà.
SDK dans tous les principaux environnements d'exécution. Le premier publish atterrit sur un canal de test dédié (bird-test:realtime) pour que vous puissiez intégrer un check CI avant de provisionner un canal de production.
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const { data, error } = await bird.realtime.publish({
channel: "bird-test:realtime",
event: "ping",
data: { hello: "world" },
}).safe();Dix étapes entre « votre serveur publie » et « votre client reçoit l'événement ».
Primitives pub/sub hébergées, nommées et auditables. Aucune infrastructure WebSocket à gérer vous-même.
- 01
Abonnez-vous à des canaux nommés
Les clients ouvrent une connexion, s'abonnent à un ou plusieurs canaux et reçoivent les événements dès leur publication.
- 02
Publiez depuis n'importe où
From your backend, your CLI, your CI, or an MCP-aware agent: same bird.realtime.publish call.
- 03
Canaux de présence
Sachez qui est dans un canal, qui a rejoint, qui est parti. Événements webhook à chaque changement.
- 04
Canaux privés avec authentification
Handshake d'authentification côté client ; votre backend signe la demande d'abonnement.
- 05
Canaux chiffrés
Chiffrement de bout en bout pour les canaux transportant des données sensibles.
- 06
Récupération de l'état de connexion
Les clients se reconnectent et rejouent les événements manqués pendant la déconnexion, dans une fenêtre configurable.
- 07
Limites de débit par canal
Plafonds de publication configurables par canal. Le tableau de bord affiche la limite et le débit actuel.
- 08
Routage inter-régions
Les connexions sont automatiquement routées vers le nœud edge le plus proche. La latence reste faible dans toutes les régions.
- 09
Webhooks sur l'état des canaux
realtime.channel.occupied, realtime.channel.vacated, realtime.member.added, realtime.member.removed. Même enveloppe HMAC que tous les autres canaux Bird.
- 10
Même authentification, même format d'erreur
Une seule clé API pour Realtime, SMS, Email, WhatsApp, Voice. Un seul registre de types d'erreur pour tous.
Pourquoi nous développons Realtime
L'expérience utilisateur en temps réel est la première à casser quand vous passez à l'échelle. Nous la gérons depuis une décennie.
Bird Realtime is the WebSocket infrastructure that powered Pusher Channels, the service many of you have shipped against for years. We're folding it into the new Bird API so it shares auth, observability, and billing with everything else you do on Bird. If you're already on Pusher today, your service keeps running on the same wires; the new SDK is the developer-facing change.
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
// On your server: publish an event to a channel.
const { data, error } = await bird.realtime.publish({
channel: "orders:BRD-49217",
event: "order.shipped",
data: { status: "shipped", eta: "Thursday, May 22" },
}).safe();
// In your client: subscribe and receive it live.
const channel = bird.realtime.subscribe("orders:BRD-49217");
channel.on("order.shipped", (event) => render(event.data));
if (error) throw error;
console.log(data.id);
// → "evt_2nQ81oP3..."
Chaque changement d'état est un webhook.
HMAC-signed payloads, replay-protected, idempotent. The same envelope on every Bird channel: learn one, you've learned them all.
{
"type": "realtime.member.added",
"id": "evt_3pX1g7t...",
"created_at": "2026-05-19T15:42:01.221Z",
"data": {
"channel": "presence:room-42",
"member_id": "usr_4hQ2m",
"members": 18,
"region": "us-east"
}
}
Calendrier de réessai : 5s, 30s, 5m, 30m, 2h, 6h, 12h. Mise en file d'attente morte après la dernière tentative ; chaque événement en file d'attente morte est rejouable depuis le tableau de bord ou l'API.
realtime.channel.occupiedLe premier abonné a rejoint un canal précédemment vide.realtime.channel.vacatedLe dernier abonné est parti ; le canal est désormais vide.realtime.member.addedUn membre a rejoint un canal de présence.realtime.member.removedUn membre a quitté un canal de présence.realtime.message.publishedUn événement a été publié sur un canal.
Si vous avez intégré l'e-mail, vous avez intégré Realtime.
Same auth, same idempotency contract, same error envelope, same webhook shape. The difference is the transport: a long-lived WebSocket connection instead of a one-shot REST send.
Realtime.
const channel = bird.realtime.subscribe("orders:BRD-49217");
channel.on("order.shipped", (event) => {
render(event.data);
});
Ouvrez une connexion, abonnez-vous à un canal, recevez les événements en temps réel. Même authentification que vos envois transactionnels.
SMS.
await bird.sms.send({
from: "Bird",
to: "+15005550006",
text: `Your order has shipped.`,
category: "transactional",
});
Même enveloppe, même idempotence. Pour quand l'événement doit arriver sur un téléphone, pas dans un client connecté.
Tarifs bientôt annoncés.
Les tarifs de Realtime sont en cours de finalisation. Si vous êtes déjà client Pusher Channels, votre service reste sur son offre actuelle. Pour un devis sur le nouveau SDK Bird Realtime, contactez-nous.