Sign inGet started

Presence-Kanäle

Ein Kanal, dessen Name mit presence- beginnt, verwendet die Autorisierung privater Kanäle und ergänzt eine Mitgliedsidentität. Ihr Backend weist jedem Abonnenten eine member_id zu. Abonnenten erhalten die aktuelle Mitgliederliste und Events, wenn Mitglieder beitreten oder den Kanal verlassen.
Verwenden Sie Presence-Kanäle für Online-Anwesenheitslisten, Dokumentbetrachter, Tippindikatoren oder kollaborative Cursor.

Abonnieren

const room = bird.subscribe("presence-room-1");

room.bind("bird:subscription_succeeded", () => {
  console.log("me:", room.myId);
  console.log("here now:", [...room.members.values()]);
});

room.bind("bird:member_added", (member) => console.log("joined", member.member_id));
room.bind("bird:member_removed", (member) => console.log("left", member.member_id));
In Swift und Kotlin gibt subscribe einen Basis-Kanaltyp zurück. Casten Sie ihn auf PresenceChannel, bevor Sie auf myId oder members zugreifen. Swift stellt eine Member-Map für bird:subscription_succeeded und einen Member für Beitritts- und Austritts-Events bereit. Kotlin liefert jedes Event als JsonElement. In beiden Clients lesen Sie die aktuelle Mitgliederliste aus room.members.
bird:subscription_succeeded wird ausgelöst, wenn das Abonnement abgeschlossen ist. Zu diesem Zeitpunkt enthält room.members die aktuelle Mitgliederliste und room.myId enthält Ihre member_id. Rendern Sie diese initiale Mitgliederliste, bevor Sie spätere Beitritts- und Austritts-Events anwenden.
Die Autorisierung folgt demselben Ablauf wie bei einem privaten Kanal, mit einer Ergänzung: Ihr Endpoint gibt member_data zurück, einen JSON-String, der member_id und optionale member_info enthält, und er muss genau diesen String signieren. Siehe Kanäle autorisieren.

member_info sicher verwenden

Jedes Kanalmitglied empfängt member_info. Verwenden Sie es für kleine öffentliche Profildaten wie einen Anzeigenamen oder eine Avatar-URL. Fügen Sie keine E-Mail-Adressen, Autorisierungsrollen oder andere sensible Daten ein.
Ihr Backend weist member_id und member_info in seiner signierten Autorisierungsantwort zu. Der Client kann ein Abonnement anfordern, aber nicht die signierte Identität wählen.

Mitglieder und Verbindungen

Ein Mitglied kann mehrere Verbindungen halten. Zum Beispiel erzeugen drei offene Tabs ein Mitglied und drei Verbindungen:
Was passiertMitglieds-EventKanalverbindungen
Erster Tab abonniertbird:member_added1
Zweiter Tab abonniertkeine2
Zweiter Tab schließtkeine1
Letzter Tab schließtbird:member_removed0
room.members repräsentiert Identitäten statt Sitzungen. Um die Anzahl offener Verbindungen zu erhalten, aktivieren Sie Connection counting und Connection count events und binden Sie dann bird:connection_count.

Presence vom Server lesen

Es gibt zwei serverseitige Abfragen, und keine davon erfordert ein Abonnement:
  • Kanalmitglieder auflisten gibt die member_id-Werte zurück, die aktuell einen Presence-Kanal abonniert haben.
  • Einen Kanal abrufen mit include=member_count gibt zurück, wie viele Mitglieder anwesend sind, ohne sie aufzulisten.
member_count ist nur für Presence-Kanäle verfügbar. Die Abfrage auf einem öffentlichen oder privaten Kanal führt zu einem Validierungsfehler, da diese Kanäle keine Mitglieder haben.
Sie können den Wert auch beim Veröffentlichen abfragen. Die Antwort enthält den Zustand jedes Zielkanals zu diesem Zeitpunkt. Siehe Events veröffentlichen.

Nächste Schritte