BIRD Realtime

Realtime API voor uw apps. Abonneren, publiceren, schalen.

Opgezet in:
Cursor

Livechat, aanwezigheid, in-app-notificaties en realtime dashboards, zonder zelf de WebSocket-infrastructuur te beheren.

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 minuten van npm install tot eerste event

Publiceer uw eerste event in de taal die u al gebruikt.

Server-SDK's voor Node, Python en Go, een browserclient voor de abonneerzijde, en gewone HTTP als u liever geen dependency toevoegt. Een kanaal hoeft niet aangemaakt te worden: het bestaat zodra iets zich erop abonneert.

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

Wat u kunt bouwen met Realtime

Breng live updates naar elk onderdeel van uw product — van chat en dashboards tot tracking en games — allemaal via één simpele API.

  1. 01

    Live scores en uitslagen

    Wedstrijdupdates, peilingresultaten, verkiezingsavonden: één publish-aanroep stuurt het nieuwe cijfer direct naar elk geabonneerd scherm.

  2. 02

    In-app-chat

    Een kanaal per ruimte, aanwezigheid voor wie online is, en client events voor typindicatoren — zonder server-roundtrip.

  3. 03

    Online samenwerking

    Client events verspreiden cursorposities, selecties en co-editing-signalen tussen peers via het kanaal, zonder omweg via de backend.

  4. 04

    Multiplayergames

    Aanwezigheid vult de lobby, client events dragen de zetten over, en een kanaal per wedstrijd houdt de status zichtbaar voor elke speler.

  5. 05

    Live grafieken en dashboards

    Publiceer metrics zodra ze veranderen. Een cache-kanaal geeft de huidige waarde aan elke late deelnemer, zodat grafieken nooit leeg weergeven.

  6. 06

    Aanwezigheidsindicatoren

    Aanwezigheidskanalen volgen leden wanneer ze deelnemen en vertrekken; webhooks houden de lijst in uw backend gesynchroniseerd.

  7. 07

    Live locatietracking

    Een koerier op de kaart van de klant, vrienden die een route delen, een vloot op het dispatchscherm: publiceer coördinaten en elke kijker volgt mee, met de laatst bekende positie gecachet voor late deelnemers.

  8. 08

    Bestel- en bezorgstatus

    Een cache-kanaal per bestelling bevat de huidige status, zodat het abonnement tevens dient als initiële statusophaling.

  9. 09

    Veilingen en biedingen

    Elk bod verschijnt gelijktijdig op het scherm van elke bieder, en een cache-kanaal geeft het huidige hoogste bod aan iedereen die halverwege de veiling deelneemt.

  10. 10

    Notificatiefeeds per gebruiker

    Eén privékanaal per gebruiker, abonnementen ondertekend door uw backend, zodat alleen de juiste client kan meeluisteren.

Waarom Realtime

Live UX is het onderdeel dat als eerste faalt bij opschaling. Wij draaien het al meer dan tien jaar.

Verbindingsstatus, aanwezigheid, fan-out, reconnectie-backoff en de capaciteit om een verkeerspiek op te vangen zijn de onderdelen van een live feature die makkelijk te prototypen maar moeilijk te beheren zijn. Realtime draait ze als managed service binnen de Bird API, zodat een live kanaal dezelfde authenticatie, observability en webhooks deelt die u al gebruikt voor e-mail en SMS.

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

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

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

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

Elke statuswijziging is een webhook.

Clients komen en gaan zonder ooit uw backend aan te raken. Zo komt die erachter: start de zware taak wanneer de eerste abonnee arriveert, stop wanneer de laatste vertrekt, en houd uw eigen overzicht bij van wie er in een ruimte is.

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_occupiedEerste abonnee heeft zich aangesloten bij een eerder leeg kanaal.
  • realtime.channel_vacatedDe laatste abonnee is vertrokken; het kanaal is nu leeg.
  • realtime.member_addedEen lid is toegetreden tot een aanwezigheidskanaal.
  • realtime.member_removedEen lid heeft een aanwezigheidskanaal verlaten.
  • realtime.connection_countHet aantal verbindingen van een kanaal is gewijzigd.

Als u e-mail hebt geïntegreerd, hebt u Realtime geïntegreerd.

Dezelfde authenticatie, hetzelfde idempotentiecontract, dezelfde fout-envelope, dezelfde webhook-structuur. Het verschil zit in het transport: een persistente WebSocket-verbinding in plaats van een eenmalige REST-aanroep.

Realtime.

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

Bereikt de persoon waar ze ook verbonden zijn, op elk tabblad en apparaat tegelijk. Geen kanaal om te benoemen, geen verbinding om te volgen.

SMS.

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

Dezelfde aanroep, één kanaal verder. Voor wanneer de update op een telefoon moet aankomen in plaats van een verbonden client.

Begin met één kanaal.
Voeg de rest toe wanneer je er klaar voor bent.

Een test-API-key is direct beschikbaar. Productietoegang wordt ontgrendeld zodra je een betaalmethode toevoegt en een afzender verifieert.

Gebruik je Claude Code, Cursor of Codex? Kopieer een setup-prompt en je agent installeert de Bird CLI en skills voor je. Kies de jouwe:

Cursor