Gehostetes Pub/Sub über WebSocket. Abonnieren, publizieren, skalieren.
Live-Chat, Präsenz, In-App-Benachrichtigungen, Echtzeit-Dashboards – ohne die WebSocket-Infrastruktur selbst zu betreiben. Basierend auf derselben Technologie, die Pusher Channels über ein Jahrzehnt lang betrieben hat. Dieselbe Authentifizierung, dieselbe Idempotenz, derselbe Webhook-Vertrag wie bei jedem anderen Bird-Kanal.
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 Minuten von npm install bis zum ersten Event
Publizieren Sie Ihr erstes Event in der Sprache, die Sie bereits nutzen.
SDKs für jede wichtige Runtime. Der erste Publish landet auf einem dafür vorgesehenen Testkanal (bird-test:realtime), sodass Sie einen CI-Check einrichten können, bevor Sie einen Produktionskanal bereitstellen.
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();Zehn Schritte zwischen „Ihr Server publiziert“ und „Ihr Client erhält das Event.“
Gehostete Pub/Sub-Primitive, benannt und auditierbar. Keine eigene WebSocket-Infrastruktur nötig.
- 01
Benannte Channels abonnieren
Clients öffnen eine Verbindung, abonnieren einen oder mehrere Channels und empfangen Events, sobald sie veröffentlicht werden.
- 02
Von überall publizieren
Von Ihrem Backend, Ihrer CLI, Ihrer CI oder einem MCP-fähigen Agenten — derselbe bird.realtime.publish-Aufruf.
- 03
Presence-Channels
Sehen Sie, wer in einem Channel ist, wer beigetreten und wer gegangen ist. Webhook-Events bei jeder Änderung.
- 04
Private Channels mit Authentifizierung
Auth-Handshake auf dem Client; Ihr Backend signiert die Abonnement-Anfrage.
- 05
Verschlüsselte Channels
Ende-zu-Ende-Verschlüsselung für Channels mit sensiblen Nutzdaten.
- 06
Wiederherstellung des Verbindungsstatus
Clients verbinden sich erneut und spielen während der Unterbrechung verpasste Events nach — bis zu einem konfigurierbaren Zeitfenster.
- 07
Rate-Limits auf Channel-Ebene
Konfigurierbare Publish-Obergrenzen pro Channel. Das Dashboard zeigt das Limit und die aktuelle Rate an.
- 08
Regionsübergreifendes Routing
Verbindungen werden automatisch zum nächstgelegenen Edge-Node geroutet. Latenzen bleiben in jeder Region niedrig.
- 09
Webhooks bei Channel-Statusänderungen
realtime.channel.occupied, realtime.channel.vacated, realtime.member.added, realtime.member.removed. Dasselbe HMAC-Envelope wie bei jedem anderen Bird-Channel.
- 10
Gleiche Auth, gleiches Error-Envelope
Ein API-Key für Realtime, SMS, Email, WhatsApp, Voice. Ein einheitliches Fehlertyp-Register für alle.
Warum wir Realtime entwickeln
Live-UX ist das Erste, was bei Skalierung bricht. Wir betreiben es seit einem Jahrzehnt.
Bird Realtime ist die WebSocket-Infrastruktur, die Pusher Channels betrieben hat — der Service, gegen den viele von Ihnen seit Jahren entwickeln. Wir integrieren ihn in die neue Bird API, sodass er Auth, Observability und Billing mit allem anderen teilt, was Sie auf Bird nutzen. Wenn Sie heute bereits Pusher einsetzen, läuft Ihr Service weiterhin auf denselben Leitungen; das neue SDK ist die entwicklerseitige Änderung.
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..."
Jede Statusänderung ist ein Webhook.
HMAC-signierte Payloads, Replay-geschützt, idempotent. Dasselbe Envelope auf jedem Bird-Channel — einen lernen, alle verstehen.
{
"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"
}
}
Wiederholungsplan: 5s, 30s, 5m, 30m, 2h, 6h, 12h. Dead-Letter nach dem letzten Versuch; jedes Dead-Letter-Event kann über das Dashboard oder die API erneut abgespielt werden.
realtime.channel.occupiedErster Subscriber hat einen zuvor leeren Channel betreten.realtime.channel.vacatedDer letzte Subscriber hat den Channel verlassen; der Channel ist jetzt leer.realtime.member.addedEin Mitglied ist einem Presence-Channel beigetreten.realtime.member.removedEin Mitglied hat einen Presence-Channel verlassen.realtime.message.publishedEin Event wurde in einem Channel veröffentlicht.
Wenn Sie E-Mail integriert haben, haben Sie auch Realtime integriert.
Gleiche Authentifizierung, gleicher Idempotency-Vertrag, gleiches Error-Envelope, gleiches Webhook-Format. Der Unterschied ist der Transport – eine dauerhafte WebSocket-Verbindung statt eines einmaligen REST-Sendevorgangs.
Realtime.
const channel = bird.realtime.subscribe("orders:BRD-49217");
channel.on("order.shipped", (event) => {
render(event.data);
});
Verbindung öffnen, einen Channel abonnieren, Events in Echtzeit empfangen. Gleiche Authentifizierung wie bei Ihren transaktionalen Sendungen.
SMS.
await bird.sms.send({
from: "Bird",
to: "+15005550006",
text: `Your order has shipped.`,
});
Gleiches Envelope, gleiche Idempotency. Für den Fall, dass das Event auf einem Telefon landen soll – nicht in einem verbundenen Client.
Preise werden in Kürze bekanntgegeben.
Die Preisgestaltung für Realtime wird gerade finalisiert. Wenn Sie bereits Pusher-Channels-Kunde sind, bleibt Ihr Service im aktuellen Plan. Für ein Angebot zum neuen Bird Realtime SDK kontaktieren Sie uns einfach.