Sign inGet started

Interrogare lo stato dei canali

Tre letture lato server elencano i canali occupati, ispezionano un canale e listano i membri di un canale di presenza. Autentica ogni richiesta con la tua chiave Bird API e la key e il secret dell'app Realtime.
import { BirdClient } from "@messagebird/sdk";

const bird = new BirdClient({
  apiKey: process.env.BIRD_API_KEY,
  realtime: {
    key: process.env.BIRD_REALTIME_KEY,
    secret: process.env.BIRD_REALTIME_SECRET,
  },
});

Quali canali sono occupati

const { data } = await bird.realtime.channels.list(appId, { prefix: "presence-" });

for (const channel of data) {
  console.log(channel.name);
}
Un canale appare nell'elenco finché almeno una connessione è iscritta. I canali non vengono creati o registrati separatamente, quindi i canali vuoti non compaiono. Usa prefix per limitare il risultato a una famiglia come presence- o orders-.
La risposta non è paginata e restituisce ogni canale occupato in un unico snapshot live. Vedi Elenco dei canali Realtime.

Ispezionare un canale

const channel = await bird.realtime.channels.get(appId, "presence-lobby", {
  include: ["member_count"],
});

if (!channel.occupied) return; // nobody is listening; skip the work
Un nome sconosciuto o inutilizzato restituisce 200 OK con occupied: false. Usa questo risultato per evitare lavoro quando nessuna connessione può riceverlo. Vedi Ottenere un canale Realtime.

Conteggi, tramite include

include è ripetibile e accetta esattamente due valori:
  • member_count è il numero di membri distinti e funziona solo sui canali di presenza.
  • connection_count è il numero di connessioni iscritte al canale e richiede l'impostazione di conteggio connessioni dell'app.
Qualsiasi altro valore restituisce 400 Bad Request. API restituisce anche 400 Bad Request per member_count su un canale non di presenza, una richiesta di elenco senza prefisso di presenza, o connection_count quando il conteggio connessioni è disabilitato.
Richiedere attributi conta come un messaggio aggiuntivo ai fini dell'utilizzo. Omettili quando occupied risponde alla tua domanda.
Un membro può avere più connessioni. Una stanza con tre persone che hanno ciascuna due schede aperte riporta un member_count di 3 e un connection_count di 6. Canali di presenza spiega la distinzione.

Chi è presente

const { members } = await bird.realtime.channels.members(appId, "presence-lobby");

for (const member of members) {
  console.log(member.member_id);
}
La risposta contiene solo gli ID dei membri. member_info viene consegnato ai client iscritti e non è disponibile tramite questa operazione REST. Unisci gli ID ai tuoi record per mostrare nomi o avatar. Vedi Elenco dei membri del canale.

Leggere lo stato mentre pubblichi

Durante la pubblicazione, usa include per ottenere gli stessi conteggi per ogni canale destinatario al momento della pubblicazione. Vedi Leggere lo stato del canale durante la pubblicazione.

Comportamento point-in-time

Ogni risposta è uno snapshot point-in-time e può diventare obsoleta immediatamente. Usala per decisioni una tantum anziché per il polling di stato continuo.
Per lo stato continuo, iscrivi un endpoint ai gruppi webhook Realtime. realtime.channel_existence segnala i canali occupati e liberati, realtime.presence segnala le variazioni dei membri e realtime.connection_count segnala le variazioni del conteggio connessioni. Usa le letture dello stato dei canali per inizializzare o riconciliare la tua vista memorizzata.

Prossimi passi