Un canale è un nome. Niente da configurare.

Un canale esiste nel momento in cui qualcosa si sottoscrive e scompare quando l'ultima connessione se ne va. Il nome determina il tipo: public per tutto ciò che un visitatore può leggere, private per tutto ciò che riguarda un singolo cliente, presence per una stanza con un elenco di presenze e un prefisso cache per lo stato di cui un nuovo arrivato ha bisogno immediatamente.

channels.ts
4 subscribed
const bird = new BirdRealtime({ appKey: APP_KEY, region: "us1" });

// Public: anyone holding the app key can subscribe.
const scores = bird.subscribe("match-42");

// Private: your backend signs every subscription.
const order = bird.subscribe("private-order-ord_123");

// Presence: private, plus an identity the room can see.
const room = bird.subscribe("presence-room-42");

// Cache: the latest event replays to whoever joins next.
const build = bird.subscribe("cache-build-8821");

build.bind("bird:cache_miss", () => showSkeleton());

Il prefisso è la configurazione.

Non c'è nessun registro di canali da tenere allineato.

I canali sono il modello di indirizzamento della Bird Realtime API. Non ne crei mai uno: ti sottoscrivi a un nome, e i primi tre caratteri di quel nome indicano all'edge come trattarlo. Un nome senza prefisso è pubblico. private- chiede al tuo backend di approvare ogni sottoscrizione. presence- fa lo stesso e associa un'identità. private-encrypted- cifra il payload con una chiave che Bird non possiede mai. I nomi accettano fino a 164 caratteri, sono case-sensitive e sono l'unica parte di un canale su cui vale la pena riflettere, perché un nome pubblico è visibile a chiunque possieda la app key.

Cinque tipi di stanza.

Stesso protocollo, stesso client, stessa chiamata di publish. Cambia solo il nome.

  1. 01

    Canali pubblici.

    Nessun endpoint di autorizzazione, nessuna registrazione. Chiunque possieda la app key può sottoscriversi, il che li rende adatti a risultati di build, punteggi live, informazioni sui voli o una pagina di stato, e inadatti a qualsiasi cosa relativa a un singolo cliente. Tieni gli identificatori fuori dal nome: orders non rivela nulla, orders-user-4821 rivela che l'utente 4821 esiste.

  2. 02

    Canali privati.

    Un nome private- instrada la sottoscrizione attraverso il tuo endpoint, che verifica la sessione e firma il connection id e il nome del canale con l'app secret. Le tue regole, la tua sessione, il tuo 403. L'edge verifica la firma e nient'altro raggiunge il canale.

  3. 03

    Canali di presenza.

    Autorizzazione da canale privato più un'identità, così ogni sottoscrittore riceve l'elenco dei membri e viene informato di arrivi e partenze. È l'unico tipo di canale con un roster.

  4. 04

    Canali cifrati.

    Un canale private-encrypted- trasporta payload che il tuo server cifra con una master key a 32 byte che non compare mai in una richiesta Realtime. L'edge e tutto ciò che sta tra esso e il browser vedono testo cifrato. I nomi dei canali e degli eventi restano in chiaro, quindi scegli nomi che non rivelino ciò che stai proteggendo.

  5. 05

    Canali cache.

    Anteponi cache- al nome, dopo qualsiasi prefisso di tipo, e il canale memorizza l'ultimo evento pubblicato via API e lo riproduce a ogni nuovo sottoscrittore. La sottoscrizione funge anche da fetch dello stato iniziale. Due vincoli da considerare nella progettazione: viene conservato solo l'evento più recente e può scadere prima del limite di 30 minuti, quindi inserisci l'intero stato in ogni payload e ripopola dal webhook di cache-miss anziché dare per scontato che la cache sia calda.

Un singolo publish, fino a cento canali.

Il publish è una normale chiamata REST dal tuo server. Indica fino a 100 canali in una singola richiesta e l'edge distribuisce l'evento a tutti. Un batch trasporta fino a 10 eventi non correlati, ciascuno verso il proprio canale. Passa il connection id del client come exclude_connection_id e la tab che ha già applicato la modifica localmente viene esclusa. Richiedi il conteggio delle connessioni o dei membri con include e la risposta indica lo stato di ogni canale al momento del publish. Riprova con la stessa idempotency key e non consegnerai due volte.

publish.ts
200 · accepted
// One event, up to 100 channels, one request.
const result = await bird.realtime.publish(APP_ID, {
  event: "score-updated",
  channels: ["match-42", "cache-match-42"],
  data: { home: 2, away: 1 },
  // The tab that scored already rendered it locally.
  exclude_connection_id: "26896.319537",
  include: ["connection_count"],
});

for (const channel of result.data ?? []) {
  console.log(channel.name, channel.connection_count);
}

I client possono comunicare direttamente tra loro.

Un indicatore di digitazione o la posizione di un cursore non hanno bisogno di passare dalla tua API. Abilita i client events sull'app e un client sottoscritto può inviare un evento chiamato client-something direttamente agli altri nel canale, con un limite di 10 al secondo per connessione. Funzionano solo su canali privati e di presenza, ed è intenzionale: la app key è nel tuo codice, quindi l'autorizzazione è ciò che rende un client abbastanza affidabile da trasmettere. Tratta ciò che arriva come un segnale, mai come stato autorevole, perché l'edge non valida il payload.

Cosa ricorda e cosa non ricorda un canale.

Un publish ritorna non appena l'edge ha accettato l'evento. La consegna è asincrona, non esiste una conferma per singolo client e un client che si disconnette durante la consegna non riceverà di nuovo l'evento alla riconnessione. Questo è il contratto reale, ed è il motivo per cui lo stato persistente appartiene al tuo database e gli eventi annunciano che è cambiato. I limiti sono identici su ogni piano: 100 canali per publish, 10 eventi per batch, 10 KB per payload, nomi di canale di 164 caratteri.

Approfondisci nella documentazione.

La panoramica di Realtime definisce canali, membri e connessioni in un'unica pagina. Pubblicare eventi copre broadcast, batch ed esclusione, canali cache spiega il replay e interrogare lo stato del canale è la lettura lato server per occupancy e conteggi.

Scala senza
perdere il controllo.

Organizza i team in spazi di lavoro, controlla l'accesso alle API e traccia le modifiche tramite log di audit.

BirdHarborOrganizzazione
WorkspaceProduzioneSandbox

Agente di invio

Chiave API · Team Operazioni clienti
Attivo
AutorizzazioniAccesso
EmailLettura e scrittura
SMSLettura e scrittura
ALAlex Lee AmministratoreAutorizzazioni aggiornate

Registro di audit

Produzione
Workspace
Produzione
Risorsa
Agente di invio
WhatsApp
Accesso in letturaLettura e scrittura
Riuscito

Inizia con Realtime.
Costruisci su più canali con Bird.

La tua prossima idea. Pronta a partire.