Sign inGet Started

Canali privati

Un canale il cui nome inizia con private- richiede l'autorizzazione dal tuo backend oltre alla chiave pubblica dell'app. Il tuo backend approva il chiamante per quel canale e restituisce una firma calcolata con il segreto dell'app.
Usa i canali privati per dati con ambito specifico, come gli aggiornamenti degli ordini di un cliente, la dashboard di un tenant o le notifiche di una singola persona.
const bird = new BirdRealtime({
  appKey: "your-app-key",
  region: "us1",
  authEndpoint: "/bird/auth",
});

const orders = bird.subscribe("private-orders-4821");
orders.bind("order-updated", (data) => {
  console.log(data);
});
Swift e Kotlin richiedono un URL di autorizzazione assoluto, mentre un client browser può usare un percorso same-origin. Aggiungi il token di sessione del tuo API tramite authHeaders. Il client include questi header in ogni richiesta di autorizzazione, comprese le richieste dopo una riconnessione.
Il client invia in POST l'ID di connessione e il nome del canale a authEndpoint. La sottoscrizione si completa solo dopo che l'endpoint approva il chiamante e restituisce una firma valida. Autorizzazione dei canali definisce la richiesta, la risposta e la stringa da firmare.

Denominare i canali per utente o per tenant

Inserisci l'ambito della risorsa nel nome del canale e verificalo nel tuo endpoint. Un client può richiedere qualsiasi nome di canale, quindi il tuo backend deve impedire sottoscrizioni tra clienti diversi:
if (channel_name !== `private-orders-${user.accountId}`) {
  return res.sendStatus(403);
}
Questo confronto è la decisione di autorizzazione. Non fare mai affidamento su nomi di canale non indovinabili per il controllo degli accessi.

Cosa supportano i canali privati

  • Eventi client. Quando l'app ha gli eventi client abilitati, un client sottoscritto può inviare eventi client- agli altri client sul canale senza un round trip attraverso il tuo server. L'edge li rifiuta sui canali pubblici.
  • Conteggio connessioni. Con le impostazioni di conteggio connessioni e eventi di conteggio connessioni dell'app abilitate, il client riceve bird:connection_count per il canale.
  • Pubblicazione dal server. La pubblicazione dal tuo server funziona esattamente come per un canale pubblico: specifica il canale nell'array channels. Nessuna autorizzazione si applica al tuo server, che possiede già il segreto dell'app.
I canali privati non hanno identità dei membri né eventi relativi ai membri. Se hai bisogno di sapere chi è presente, usa un canale di presenza.

Quando una sottoscrizione viene rifiutata

Una sottoscrizione rifiutata arriva come bird:subscription_error. Le cause più comuni includono una risposta non 2xx dal tuo endpoint o una firma che non corrisponde alla richiesta. Consulta Autorizzazione dei canali per la risoluzione dei problemi.

Prossimi passi