BIRD Realtime

Realtime API dla Twoich aplikacji. Subskrybuj, publikuj, skaluj.

Konfiguracja w:
Cursor

Czat na żywo, obecność, powiadomienia w aplikacji i dashboardy w czasie rzeczywistym — bez samodzielnego zarządzania infrastrukturą WebSocket.

app.ts
connected
import { BirdRealtime } from "@messagebird/realtime";

const bird = new BirdRealtime({
  appKey: APP_KEY,
  region: "us1",
});

const channel = bird.subscribe("orders-42");

channel.bind("order-shipped", (data) => {
  render(data);
});
Order BRD-49217Placed
ETAThursday, May 22

5 minut od npm install do pierwszego zdarzenia

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

SDK serwerowe dla TypeScript, Python, Go i PHP, klienty przeglądarkowe, Swift i Kotlin po stronie subskrypcji oraz zwykły HTTP, gdy wolisz nie dodawać zależności. Kanał nie wymaga provisioningu — istnieje od momentu, gdy coś zacznie go subskrybować.

1
2
3
4
5
6
const result = await bird.realtime.publish("rap_01krdgeqcxet5s7t44vh8rt9mg", {
  event: "order.updated",
  channels: ["orders", "presence-lobby"],
  data: { order_id: "ord_123", status: "shipped" },
});
console.log(result.data?.length); // one entry per channel

Co możesz zbudować z Realtime

Wprowadź aktualizacje na żywo do każdego zakątka Twojego produktu — od czatu i dashboardów po śledzenie i gry — wszystko przez jedno proste API.

  1. 01

    Wyniki na żywo

    Aktualizacje meczów, wyniki ankiet, wieczory wyborcze: jedno wywołanie publish rozsyła nową wartość na każdy zasubskrybowany ekran jednocześnie.

  2. 02

    Czat w aplikacji

    Kanał na pokój, obecność dla sprawdzenia kto jest online i zdarzenia klienckie dla wskaźników pisania — bez podróży na serwer i z powrotem.

  3. 03

    Współpraca online

    Zdarzenia klienckie rozsyłają pozycje kursorów, zaznaczenia i sygnały współedycji między uczestnikami przez kanał — bez pośrednictwa backendu.

  4. 04

    Gry wieloosobowe

    Obecność zapełnia lobby, zdarzenia klienckie przenoszą ruchy, a kanał na mecz utrzymuje stan widoczny dla każdego gracza.

  5. 05

    Wykresy i dashboardy na żywo

    Publikuj metryki w momencie ich zmiany. Kanał cache przekazuje aktualną wartość każdemu spóźnionemu, więc wykresy nigdy nie renderują się puste.

  6. 06

    Wskaźniki obecności

    Kanały obecności śledzą członków, gdy dołączają i odchodzą; webhooki utrzymują synchronizację rejestru w Twoim backendzie.

  7. 07

    Śledzenie lokalizacji na żywo

    Kurier na mapie klienta, znajomi współdzielący trasę, flota na ekranie dyspozytorni: publikuj współrzędne, a każdy obserwator podąża za nimi — z ostatnią znaną pozycją w cache dla spóźnionych.

  8. 08

    Status zamówienia i dostawy

    Kanał cache na zamówienie przechowuje aktualny status, więc subskrypcja jednocześnie pobiera stan początkowy.

  9. 09

    Aukcje i licytacje

    Każda oferta trafia jednocześnie na ekran każdego licytującego, a kanał cache przekazuje aktualną najwyższą ofertę każdemu, kto dołączy w trakcie aukcji.

  10. 10

    Kanały powiadomień per użytkownik

    Jeden prywatny kanał na użytkownika, subskrypcje podpisane przez Twój backend — tylko właściwy klient może nasłuchiwać.

Dlaczego Realtime

UX na żywo to pierwsza rzecz, która się psuje przy skalowaniu. My prowadzimy to od ponad dekady.

Stan połączenia, obecność, fan-out, backoff przy ponownym łączeniu i zdolność do absorpcji skoków ruchu — to elementy funkcji na żywo, które łatwo prototypować, a trudno utrzymywać. Realtime uruchamia je jako zarządzaną usługę wewnątrz Bird API, więc kanał na żywo współdzieli uwierzytelnianie, obserwowalność i webhooki, których już używasz do e-maili i SMS.

presence.ts
18 members
import type { Member } from "@messagebird/realtime";

const room = bird.subscribe("presence-room-42");

room.bind("bird:subscription_succeeded", () => {
  const members = [...room.members.values()];
  render({ me: room.myId, members });
});

room.bind<Member>("bird:member_added", (member) => {
  addToRoster(member.member_id);
});

room.bind<Member>("bird:member_removed", (member) => {
  removeFromRoster(member.member_id);
});

Każda zmiana stanu to webhook.

Klienci przychodzą i odchodzą, nie dotykając Twojego backendu. Oto jak się o tym dowiaduje: uruchom kosztowne zadanie, gdy pojawi się pierwszy subskrybent, zatrzymaj je, gdy odejdzie ostatni, i utrzymuj własny widok tego, kto jest w pokoju.

POST /webhooks/bird
signed
{
  "type": "realtime.member_added",
  "timestamp": "2026-05-19T15:42:01.221Z",
  "data": {
    "channel": "presence-room-42",
    "member_id": "usr_4hQ2m"
  }
}
  • 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.connection_countLiczba połączeń kanału uległa zmianie.

Jeśli zintegrowałeś e-mail, to zintegrowałeś już Realtime.

Ta sama autoryzacja, ten sam kontrakt idempotentności, ta sama koperta błędów, ten sam format webhooków. Różnica polega na transporcie: trwałe połączenie WebSocket zamiast jednorazowego wysłania przez REST.

Realtime.

realtime
await bird.realtime.members.send(APP_ID, "usr_4hQ2m", {
  event: "order-shipped",
  data:  { status: "shipped" },
});

Dociera do osoby wszędzie tam, gdzie jest połączona — w każdej karcie i na każdym urządzeniu jednocześnie. Bez nazwy kanału, bez śledzenia połączeń.

SMS.

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

To samo wywołanie, tylko inny kanał. Gdy aktualizacja musi trafić na telefon zamiast do połączonego klienta.

Put it into practice.

Continue with the documentation, guides and examples for this topic. Resources are in English.

Try the practice and get an implementation brief

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