Realtime è in fase di aggiornamento

Pub/sub gestito su WebSocket. Sottoscrivi, pubblica, scala.

Chat dal vivo, presenza, notifiche in-app, dashboard in tempo reale — senza gestire l'infrastruttura WebSocket. Basato sulla stessa tecnologia che ha alimentato Pusher Channels per un decennio. Stessa autenticazione, stessa idempotenza, stesso contratto webhook di ogni altro canale Bird.

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

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

SDK per ogni runtime principale. Il primo publish arriva su un canale di test dedicato (bird-test:realtime) così puoi integrare un check CI prima di creare un canale di produzione.

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();

Dieci passaggi tra "il tuo server pubblica" e "il tuo client riceve l'evento."

Primitive pub/sub gestite, denominate e tracciabili. Nessuna infrastruttura WebSocket da gestire.

  1. 01

    Sottoscrivi canali denominati

    I client aprono una connessione, si iscrivono a uno o più canali e ricevono gli eventi man mano che vengono pubblicati.

  2. 02

    Pubblica da qualsiasi origine

    Dal tuo backend, dalla CLI, dalla CI o da un agente compatibile con MCP — stessa chiamata bird.realtime.publish.

  3. 03

    Canali di presenza

    Scopri chi è in un canale, chi è entrato, chi è uscito. Eventi webhook a ogni variazione.

  4. 04

    Canali privati con autenticazione

    Handshake di autenticazione sul client; il tuo backend firma la richiesta di sottoscrizione.

  5. 05

    Canali crittografati

    Crittografia end-to-end per i canali che trasportano dati sensibili.

  6. 06

    Ripristino dello stato della connessione

    I client si riconnettono e recuperano gli eventi persi durante la disconnessione, fino a una finestra configurabile.

  7. 07

    Rate limit a livello di canale

    Limiti di pubblicazione configurabili per canale. La dashboard mostra il limite e la frequenza attuale.

  8. 08

    Routing cross-region

    Le connessioni vengono instradate automaticamente al nodo edge più vicino. Latenze ridotte in qualsiasi area geografica.

  9. 09

    Webhook sullo stato del canale

    realtime.channel.occupied, realtime.channel.vacated, realtime.member.added, realtime.member.removed. Stesso envelope HMAC di ogni altro canale Bird.

  10. 10

    Stessa autenticazione, stesso formato di errore

    Una sola API key per Realtime, SMS, Email, WhatsApp, Voice. Un unico registro dei tipi di errore per tutti.

Perché sviluppiamo Realtime

La UX in tempo reale è la prima cosa che si rompe quando scali. Noi la gestiamo da un decennio.

Bird Realtime è l'infrastruttura WebSocket che ha alimentato Pusher Channels — il servizio su cui molti di voi hanno costruito per anni. Lo stiamo integrando nella nuova API Bird in modo che condivida autenticazione, osservabilità e fatturazione con tutto ciò che fate su Bird. Se oggi siete già su Pusher, il vostro servizio continua a funzionare sulla stessa infrastruttura; il nuovo SDK è il cambiamento lato sviluppatore.

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..."

Ogni cambio di stato è un webhook.

Payload firmati con HMAC, protetti da replay, idempotenti. Stesso envelope su ogni canale Bird — impara uno, li conosci tutti.

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"
  }
}

Pianificazione dei tentativi: 5s, 30s, 5m, 30m, 2h, 6h, 12h. Dead-letter dopo l'ultimo tentativo; ogni evento in dead-letter può essere riprodotto dalla dashboard o tramite API.

  • 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.message.publishedUn evento è stato pubblicato su un canale.

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

Stessa autenticazione, stesso contratto di idempotenza, stesso formato degli errori, stessa struttura dei webhook. La differenza è il trasporto: una connessione WebSocket persistente invece di un singolo invio REST.

Realtime.

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

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

Apri una connessione, iscriviti a un canale, ricevi gli eventi in tempo reale. Stessa autenticazione dei tuoi invii transazionali.

SMS.

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

Stesso formato, stessa idempotenza. Per quando l'evento deve arrivare su un telefono, non su un client connesso.

Prezzi in arrivo.

I prezzi di Realtime sono in fase di definizione. Se sei già cliente Pusher Channels, il tuo servizio resta sul piano attuale. Per un preventivo sul nuovo Bird Realtime SDK, contattaci.

Iscriviti alla lista d'attesa

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