Sign inGet started

Channel-Status abfragen

Drei serverseitige Abfragen listen belegte Channels auf, prüfen einen einzelnen Channel und listen die Mitglieder eines Presence-Channels. Authentifizieren Sie jede Anfrage mit Ihrem Bird-API-Key sowie dem Key und Secret der Realtime-App.
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,
  },
});

Welche Channels sind belegt

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

for (const channel of data) {
  console.log(channel.name);
}
Ein Channel erscheint in der Liste, solange mindestens eine Verbindung ihn abonniert hat. Channels werden nicht separat erstellt oder registriert, daher erscheinen leere Channels nicht. Verwenden Sie prefix, um das Ergebnis auf eine Familie wie presence- oder orders- einzuschränken.
Die Antwort ist nicht paginiert und gibt jeden belegten Channel in einem Live-Snapshot zurück. Siehe Realtime-Channels auflisten.

Einen einzelnen Channel prüfen

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

if (!channel.occupied) return; // nobody is listening; skip the work
Ein unbekannter oder ungenutzter Name gibt 200 OK mit occupied: false zurück. Nutzen Sie dieses Ergebnis, um Arbeit zu überspringen, wenn keine Verbindung sie empfangen kann. Siehe Einen Realtime-Channel abrufen.

Zähler über include

include ist wiederholbar und akzeptiert genau zwei Werte:
  • member_count ist die Anzahl der eindeutigen Mitglieder und funktioniert nur auf Presence-Channels.
  • connection_count ist die Anzahl der Verbindungen, die den Channel abonniert haben, und erfordert die Verbindungszählung-Einstellung der App.
Jeder andere Wert gibt 400 Bad Request zurück. Die API gibt außerdem 400 Bad Request für member_count auf einem Nicht-Presence-Channel, eine Listenanfrage ohne Presence-Präfix oder connection_count zurück, wenn die Verbindungszählung deaktiviert ist.
Das Abfragen von Attributen zählt als eine zusätzliche Nachricht für die Nutzung. Lassen Sie sie weg, wenn occupied Ihre Frage beantwortet.
Ein Mitglied kann mehrere Verbindungen halten. Ein Raum mit drei Personen, die jeweils zwei Tabs geöffnet haben, meldet einen member_count von 3 und einen connection_count von 6. Presence-Channels erklärt den Unterschied.

Wer ist anwesend

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

for (const member of members) {
  console.log(member.member_id);
}
Die Antwort enthält nur Mitglieder-IDs. member_info wird an abonnierte Clients geliefert und ist über diese REST-Operation nicht verfügbar. Verknüpfen Sie die IDs mit Ihren eigenen Datensätzen, um Namen oder Avatare darzustellen. Siehe Channel-Mitglieder auflisten.

Status lesen während Sie publizieren

Verwenden Sie beim Publizieren include, um die gleichen Zähler für jeden Ziel-Channel zum Zeitpunkt der Veröffentlichung zurückzugeben. Siehe Channel-Status beim Publizieren lesen.

Zeitpunktbezogenes Verhalten

Jede Antwort ist ein Zeitpunkt-Snapshot und kann sofort veralten. Verwenden Sie sie für einmalige Entscheidungen statt für Polling bei kontinuierlichem Status.
Für kontinuierlichen Status abonnieren Sie einen Endpoint bei den Realtime-Webhook-Gruppen. realtime.channel_existence meldet belegte und freigegebene Channels, realtime.presence meldet Mitgliederänderungen und realtime.connection_count meldet Änderungen der Verbindungsanzahl. Verwenden Sie Channel-Status-Abfragen, um Ihre gespeicherte Ansicht zu initialisieren oder abzugleichen.

Nächste Schritte