Sign inGet started

Presence-kanalen

Een kanaal waarvan de naam begint met presence- gebruikt private-kanaalauthorisatie en voegt ledenidentiteit toe. Je backend wijst elke abonnee een member_id toe. Abonnees ontvangen de actuele ledenlijst en events wanneer leden toetreden of vertrekken.
Gebruik presence-kanalen voor online roosters, documentkijkers, typindicatoren of samenwerkingscursors.

Abonneren

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 en Kotlin geeft subscribe een basiskanaaltype terug. Cast het naar PresenceChannel voordat je myId of members benadert. Swift biedt een ledenmap voor bird:subscription_succeeded en een Member voor join- en leave-events. Kotlin levert elk event als JsonElement. In beide clients lees je het actuele roster uit room.members.
bird:subscription_succeeded wordt geactiveerd wanneer het abonnement voltooid is. Op dat moment bevat room.members het actuele roster en bevat room.myId je member_id. Render dit initiële roster voordat je latere join- en leave-events toepast.
Autorisatie volgt dezelfde flow als een privékanaal met één toevoeging: je endpoint retourneert member_data, een JSON-string met member_id en optionele member_info, en het moet exact die string ondertekenen. Zie Kanalen autoriseren.

Gebruik member_info veilig

Elk kanaallid ontvangt member_info. Gebruik het voor kleine openbare profielgegevens zoals een weergavenaam of avatar-URL. Voeg geen e-mailadressen, autorisatierollen of andere gevoelige gegevens toe.
Je backend wijst member_id en member_info toe in het ondertekende autorisatieantwoord. De client kan een abonnement aanvragen, maar kan de ondertekende identiteit niet kiezen.

Leden en verbindingen

Eén lid kan meerdere verbindingen hebben. Drie open tabbladen leveren bijvoorbeeld één lid en drie verbindingen op:
Wat er gebeurtLid-eventKanaalverbindingsteller
Eerste tabblad abonneertbird:member_added1
Tweede tabblad abonneertgeen2
Tweede tabblad sluitgeen1
Laatste tabblad sluitbird:member_removed0
room.members vertegenwoordigt identiteiten in plaats van sessies. Om het aantal open verbindingen te ontvangen, schakel je Connection counting en Connection count events in en bind je bird:connection_count.

Presence uitlezen vanaf je server

Er bestaan twee server-side reads, en geen van beide vereist een abonnement:
  • Kanaalleden opvragen retourneert de member_id-waarden die momenteel geabonneerd zijn op een presence-kanaal.
  • Een kanaal opvragen met include=member_count retourneert hoeveel leden aanwezig zijn, zonder ze op te sommen.
member_count is alleen voor presence-kanalen. Het opvragen op een openbaar of privékanaal is een validatiefout, omdat die kanalen geen leden hebben.
Je kunt het ook opvragen tijdens het publiceren; dat retourneert de status van elk doelkanaal op dat moment. Zie Events publiceren.

Volgende stappen

Gerelateerde bronnen

Ga verder met de documentatie, gidsen en voorbeelden voor dit onderwerp. De bronnen zijn in het Engels.

Probeer de oefening en ontvang een implementatieoverzicht