Sign inGet started

Événements de watchlist

Un membre qui se connecte peut désigner les membres qu'il souhaite suivre, et la connexion est notifiée lorsque l'un d'eux passe en ligne ou hors ligne. C'est toute la fonctionnalité : pas de canal par relation, pas de polling, une seule liste.
Les événements de watchlist reposent sur la connexion du membre. L'identité que votre backend signe lors de la connexion peut contenir un tableau watchlist d'identifiants de membres ; lorsque le paramètre watchlist_events de l'application est activé, la connexion reçoit des événements en ligne et hors ligne pour exactement ces identifiants. Un membre est en ligne tant qu'il possède au moins une connexion authentifiée : la première connexion déclenche online, la fermeture de la dernière déclenche offline, et les onglets intermédiaires ne déclenchent rien, selon le même comptage qu'utilisent les canaux de présence.

Activer la fonctionnalité

Activez Watchlist events dans les paramètres de l'application sur la page Realtime → Apps, ou définissez watchlist_events à true sur l'application via l'API Realtime. Les connexions récupèrent le paramètre au moment de la connexion : activez-le avant de livrer les clients qui en dépendent.

Placer la watchlist dans l'identité signée

La watchlist fait partie de member_data, la chaîne JSON que votre endpoint d'authentification membre signe. Ajoutez les identifiants à côté de l'identité :
Exemple de code
{
  "member_id": "u_1",
  "member_info": { "name": "Ada" },
  "watchlist": ["u_2", "u_3"]
}
Comme la liste se trouve dans l'identité signée, votre endpoint d'authentification décide qui un membre peut suivre : construisez le tableau à partir de vos propres données (ses contacts, son équipe) plutôt que d'accepter celui envoyé par le client, sinon n'importe quel membre peut en suivre un autre. Une watchlist contient jusqu'à 100 identifiants ; une liste plus longue est tronquée aux 100 premiers et la connexion reçoit l'erreur 4302 indiquant les identifiants acceptés.
La liste est capturée à la connexion et reste valable pendant toute la durée de vie de la connexion. Pour la modifier, faites signer la nouvelle liste par votre endpoint : le client se reconnecte automatiquement à chaque reconnexion, donc la connexion suivante suit la liste mise à jour et reçoit ses statuts actuels.

Écouter dans le navigateur

Bindez sur bird.member.watchlist. Le statut actuel de toute la liste arrive juste après la connexion, ce qui vous permet d'afficher qui est en ligne avant tout changement d'état :
Exemple de code
await bird.signin();

bird.member.watchlist.bind("online", (memberIds) => {
  console.log("online:", memberIds);
});
bird.member.watchlist.bind("offline", (memberIds) => {
  console.log("offline:", memberIds);
});
Chaque événement contient les identifiants de membres concernés. La livraison initiale après la connexion couvre la liste complète, regroupée par statut ; ensuite, les événements arrivent lorsque des membres passent entre zéro et une connexion.

Watchlist ou présence ?

Les canaux de présence répondent à "who is in this room with me" : tout le monde s'abonne au même canal et voit la même liste de membres. Une watchlist répond à "are the people I care about online anywhere" : chaque membre suit sa propre liste, et les personnes suivies n'ont rien à faire à part se connecter. Une liste de contacts, un indicateur de disponibilité d'agent ou une notification "your contact just came online" relèvent de la watchlist ; un roster de salon partagé relève de la présence.

Étapes suivantes