Realtime jest w trakcie aktualizacji

Hostowany pub/sub przez WebSocket. Subskrybuj, publikuj, skaluj.

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.

realtime.ts
200 · 0.2s
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 minut od npm install do pierwszego zdarzenia

Opublikuj swoje pierwsze zdarzenie w języku, którego już używasz.

SDK dla każdego popularnego środowiska uruchomieniowego. Pierwsza publikacja trafia na dedykowany kanał testowy (bird-test:realtime), więc możesz dodać test CI, zanim uruchomisz kanał produkcyjny.

1
2
3
4
5
6
7
8
9
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();

Dziesięć kroków między "Twój serwer publikuje" a "Twój klient otrzymuje zdarzenie".

Hostowane mechanizmy pub/sub — nazwane i audytowalne. Żadnej infrastruktury WebSocket do samodzielnego zarządzania.

  1. 01

    Subskrybuj nazwane kanały

    Klienci otwierają połączenie, subskrybują jeden lub więcej kanałów i otrzymują zdarzenia w momencie ich publikacji.

  2. 02

    Publikuj z dowolnego miejsca

    From your backend, your CLI, your CI, or an MCP-aware agent: same bird.realtime.publish call.

  3. 03

    Kanały obecności

    Wiedz, kto jest na kanale, kto dołączył, kto wyszedł. Zdarzenia webhook przy każdej zmianie.

  4. 04

    Kanały prywatne z autoryzacją

    Handshake autoryzacyjny po stronie klienta; Twój backend podpisuje żądanie subskrypcji.

  5. 05

    Kanały szyfrowane

    Szyfrowanie end-to-end dla kanałów przesyłających wrażliwe dane.

  6. 06

    Odzyskiwanie stanu połączenia

    Klienci ponownie łączą się i odtwarzają zdarzenia utracone podczas rozłączenia — w ramach konfigurowalnego okna czasowego.

  7. 07

    Limity częstotliwości na poziomie kanału

    Konfigurowalne limity publikacji per kanał. Dashboard pokazuje limit i aktualną częstotliwość.

  8. 08

    Routing międzyregionalny

    Połączenia automatycznie kierowane do najbliższego węzła brzegowego. Niskie opóźnienia w każdym regionie.

  9. 09

    Webhooki na zmianę stanu kanału

    realtime.channel.occupied, realtime.channel.vacated, realtime.member.added, realtime.member.removed. Ta sama koperta HMAC co w każdym innym kanale Bird.

  10. 10

    Ta sama autoryzacja, ta sama struktura błędów

    Jeden klucz API dla Realtime, SMS, Email, WhatsApp, Voice. Jeden rejestr typów błędów dla nich wszystkich.

Dlaczego budujemy Realtime

UX w czasie rzeczywistym to element, który psuje się pierwszy przy skalowaniu. My zajmujemy się tym od dekady.

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.

realtime.ts
200 · 0.2s
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..."

Każda zmiana stanu to webhook.

HMAC-signed payloads, replay-protected, idempotent. The same envelope on every Bird channel: learn one, you've learned them all.

POST /webhooks/bird
signed
{
  "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"
  }
}

Harmonogram ponownych prób: 5s, 30s, 5m, 30m, 2h, 6h, 12h. Po ostatniej próbie zdarzenie trafia do kolejki dead-letter; każde takie zdarzenie można odtworzyć z poziomu dashboardu lub API.

  • realtime.channel.occupiedPierwszy subskrybent dołączył do wcześniej pustego kanału.
  • realtime.channel.vacatedOstatni subskrybent opuścił kanał; kanał jest teraz pusty.
  • realtime.member.addedCzłonek dołączył do kanału obecności.
  • realtime.member.removedCzłonek opuścił kanał obecności.
  • realtime.message.publishedZdarzenie zostało opublikowane na kanale.

Jeśli zintegrowałeś e-mail, to zintegrowałeś już 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.

realtime
const channel = bird.realtime.subscribe("orders:BRD-49217");

channel.on("order.shipped", (event) => {
  render(event.data);
});

Otwórz połączenie, zasubskrybuj kanał, odbieraj zdarzenia w czasie rzeczywistym. To samo uwierzytelnianie co przy wysyłkach transakcyjnych.

SMS.

sms
await bird.sms.send({
  from:     "Bird",
  to:       "+15005550006",
  text:     `Your order has shipped.`,
  category: "transactional",
});

Ta sama struktura, ta sama idempotentność. Na wypadek, gdy zdarzenie ma trafić na telefon, a nie do podłączonego klienta.

Cennik wkrótce.

Cennik Bird Realtime jest w trakcie finalizacji. Jeśli korzystasz już z Pusher Channels, Twoja usługa pozostaje na dotychczasowym planie. Aby uzyskać wycenę nowego Bird Realtime SDK, napisz do nas.

Zacznij od jednego kanału.
Dodaj kolejne, gdy będziesz gotowy.

Testowy klucz API otrzymasz od razu. Dostęp produkcyjny odblokujesz po dodaniu metody płatności i weryfikacji nadawcy.

Używasz Claude Code, Cursor lub Codex? Skopiuj prompt konfiguracyjny, a Twój agent zainstaluje za Ciebie Bird CLI i umiejętności. Wybierz swój:

Cursor