BIRD Realtime

Realtime API per le tue app. Sottoscrivi, pubblica, scala.

Configurazione in:
Cursor

Live chat, presenza, notifiche in-app e dashboard in tempo reale, senza gestire l'infrastruttura WebSocket in autonomia.

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 minuti da npm install al primo evento

Pubblica il tuo primo evento nel linguaggio che già utilizzi.

SDK server per Node, Python e Go, un client browser per il lato sottoscrizione e semplice HTTP quando preferite non aggiungere una dipendenza. Un canale non richiede provisioning: esiste nel momento in cui qualcosa vi si sottoscrive.

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

Cosa puoi costruire con Realtime

Porta aggiornamenti live in ogni angolo del tuo prodotto, dalla chat ai dashboard, dal tracking ai giochi, tutto attraverso un'unica semplice API.

  1. 01

    Punteggi e risultati live

    Aggiornamenti delle partite, risultati dei sondaggi, notti elettorali: una singola chiamata di pubblicazione distribuisce il nuovo dato a ogni schermo sottoscritto contemporaneamente.

  2. 02

    Chat in-app

    Un canale per stanza, presenza per chi è online ed eventi client per gli indicatori di digitazione, senza round-trip verso il server.

  3. 03

    Collaborazione online

    Gli eventi client distribuiscono posizioni del cursore, selezioni e segnali di co-editing tra i peer attraverso il canale, senza passaggi dal backend.

  4. 04

    Giochi multiplayer

    La presenza riempie la lobby, gli eventi client trasportano le mosse e un canale per partita mantiene lo stato visibile a ogni giocatore.

  5. 05

    Grafici e dashboard live

    Pubblica le metriche appena cambiano. Un canale con cache consegna il valore corrente a ogni nuovo arrivato, così i grafici non si caricano mai vuoti.

  6. 06

    Indicatori di presenza

    I canali di presenza tracciano i membri quando entrano e escono; i webhook mantengono sincronizzato il registro del tuo backend.

  7. 07

    Tracciamento posizione live

    Un corriere sulla mappa del cliente, amici che condividono un percorso, una flotta sulla schermata di dispatching: pubblica le coordinate e ogni osservatore segue, con l'ultima posizione nota nella cache per chi arriva dopo.

  8. 08

    Stato ordini e consegne

    Un canale con cache per ordine conserva lo stato corrente, così la sottoscrizione funge anche da caricamento dello stato iniziale.

  9. 09

    Aste e offerte

    Ogni offerta arriva sullo schermo di tutti gli offerenti simultaneamente, e un canale con cache consegna l'offerta più alta corrente a chiunque si unisca a metà asta.

  10. 10

    Feed di notifiche per utente

    Un canale privato per utente, sottoscrizioni firmate dal tuo backend, così solo il client autorizzato può ascoltare.

Perché Realtime

L'esperienza live è la prima cosa che si rompe quando scali. Noi la gestiamo da oltre un decennio.

Stato della connessione, presenza, fan-out, backoff di riconnessione e capacità di assorbire picchi di traffico sono le parti di una funzionalità live facili da prototipare ma difficili da gestire in produzione. Realtime le esegue come servizio gestito all'interno dell'API Bird, così un canale live condivide autenticazione, osservabilità e webhook che già utilizzi per email e 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);
});

Ogni cambio di stato è un webhook.

I client vanno e vengono senza mai toccare il tuo backend. Ecco come ne viene informato: avvia il processo oneroso quando arriva il primo sottoscrittore, fermalo quando se ne va l'ultimo e mantieni la tua vista di chi è presente in una stanza.

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_occupiedIl primo sottoscrittore si è unito a un canale precedentemente vuoto.
  • realtime.channel_vacatedL'ultimo sottoscrittore è uscito; il canale è ora vuoto.
  • realtime.member_addedUn membro si è unito a un canale di presenza.
  • realtime.member_removedUn membro ha lasciato un canale di presenza.
  • realtime.connection_countIl conteggio delle connessioni di un canale è cambiato.

Se hai integrato l'email, hai già integrato Realtime.

Stessa autenticazione, stesso contratto di idempotenza, stesso formato di errore, stessa struttura webhook. La differenza è il trasporto: una connessione WebSocket persistente anziché un singolo invio REST.

Realtime.

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

Raggiunge la persona ovunque sia connessa, su ogni scheda e dispositivo contemporaneamente. Nessun canale da specificare, nessuna connessione da tracciare.

SMS.

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

La stessa chiamata, su un altro canale. Per quando l'aggiornamento deve arrivare su un telefono anziché su un client connesso.

Inizia con un canale.
Aggiungi gli altri quando sei pronto.

Una chiave API di test è subito tua. La produzione si sblocca quando aggiungi un metodo di pagamento e verifichi un mittente.

Usi Claude Code, Cursor o Codex? Copia un prompt di configurazione e il tuo agente installerà la CLI e le skill di Bird per te. Scegli il tuo:

Cursor