DEV Community

Cover image for Comment activer et configurer la présence PubNub

Comment activer et configurer la présence PubNub

Comment détecter si un utilisateur se connecte ou se déconnecte, ou comment savoir si un appareil client est connecté et quand il se déconnecte ? PubNub presence vous permet de savoir qui est connecté à vos canaux en temps réel et vous alerte lorsque leur statut de connexion change.

Embedded YouTube Video

Regarder la vidéo

Le système de présence est très flexible et permet des cas d'utilisation tels que :

  • Surveiller quand les utilisateurs rejoignent ou quittent une conversation de chat
  • Détecter si un utilisateur est en ligne ou hors ligne
  • Déterminer si un appareil IoT est connecté et disponible
  • Compter le nombre de clients connectés à un canal (comptage de l'occupation du canal).

Vous pouvez également définir des informations d'état (métadonnées) pour accompagner la présence du client qui seront reçues par tous les destinataires intéressés ; par exemple, bien que la présence du client soit "en ligne", l'utilisateur peut choisir de définir son statut personnalisé comme "absent" ou "ne pas déranger".

Pour activer la présence PubNub, connectez-vous au portail d'administration, naviguez jusqu'à l'application et la télécommande sur laquelle vous souhaitez activer la présence, et basculez l'interrupteur de présence dans l'écran de configuration de cette télécommande :

Portal Configuration: Presence Enable

Vous serez invité à confirmer que vous souhaitez activer la présence.

Sachez que l'activation de la présence peut entraîner une augmentation significative du nombre de transactions, en particulier pour ceux qui bénéficient d'un plan de tarification basé sur les transactions. Pour contrôler le nombre de transactions, vous pouvez utiliser la fonction "Gestion de la présence", expliquée plus loin dans cet article.

Portal Configuration: Presence Enable Confirm

N'oubliez pas de sauvegarder les changements lorsque vous modifiez la configuration de votre clavier.

Portal Configuration: Presence Confirm Changes

Mode annonce

Une fois activé, PubNub génère automatiquement des événements de présence lorsque des clients (utilisateurs ou appareils) s'inscrivent ou se désinscrivent d'un canal.

Lorsqu'un client s'abonne à un canal, il génère un événement d'adhésion:

{"channel" : "<nom du canal qui a été rejoint>", "action" : "join", "occupancy" : 2, // Occupation du canal "uuid" : "<userid of client who joined>", "timetoken" : "<Moment de l'adhésion>" }
Enter fullscreen mode Exit fullscreen mode

Lorsqu'un client se désabonne d'un canal, il génère un événement " leave":

{"channel" : "<nom du canal quitté>", "action" : "leave", "occupancy" : 1, // Occupation du canal "uuid" : "<userid of client who left>", "timetoken" : "<Quand le départ a eu lieu>" }
Enter fullscreen mode Exit fullscreen mode

Considérons un client web connecté à un canal, et l'utilisateur ferme de force l'onglet au lieu de permettre au client de se désabonner :

Si le client ne se désabonne pas explicitement, mais qu'il est détecté comme n'étant pas présent après un certain temps (300 secondes par défaut), un événement de dépassement de délai est déclenché :

{"channel" : "<nom de la connexion au canal qui a expiré>", "action" : "timeout", "occupancy":1, // Occupation du canal "uuid" : "<userid of client who timed out>", "timetoken" : "<Lorsque le délai d'attente s'est écoulé>" }
Enter fullscreen mode Exit fullscreen mode

Générer un congé sur TCP FIN ou RST

Au lieu d'attendre l'événement de dépassement de délai dans le scénario ci-dessus, une autre option consiste à détecter au niveau du réseau lorsqu'un client quitte le canal. En activant l'option "Generate Leave on TCP FIN or RST" sur le clavier, la fermeture forcée de l'onglet du navigateur dans ce scénario génèrera un événement de départ qui sera déclenché immédiatement, au lieu d'un événement de dépassement de délai.

Portal Configuration: Presence Generate Leave TCP FIN RST

Débondage

Parfois, les clients rejoignent et quittent rapidement les canaux, soit à cause de problèmes de réseau, soit à cause de la conception de votre application. Pour éviter les événements de connexion et de départ excessifs, spécifiez une valeur de temporisation (debounce ) en secondes. Après qu'un client a généré un événement de jonction, il ne sera pas autorisé à générer un autre événement de jonction avant deux secondes, par exemple.

Portal Configuration: Presence Debounce

Mode d'intervalle

Announce Max

Les événements de connexion et de départ sont déclenchés immédiatement tant que le nombre de clients dans le canal reste inférieur au paramètre "Announce Max", qui est fixé par défaut à 20.

Portal Configuration: Presence Announce Max

Au fur et à mesure que le nombre d'occupants d'un canal augmente, le nombre d'événements de jonction et de départ augmente également, mais à un moment donné, il devient inutile pour un client de tenter de gérer tous ces événements en temps réel. Prenons l'exemple d'un groupe de discussion comptant 200 participants. Le client doit-il mettre à jour l'état en ligne de chacun de ces participants au fur et à mesure qu'ils se connectent ou se déconnectent ? Cela représenterait plus d'informations que l'utilisateur humain ne pourrait en garder la trace.

Vous pouvez configurer Announce Max entre 1 et 100. Lorsque le nombre de clients dans un canal dépasse "Announce Max", les événements join, leave et timeout ne sont plus générés mais sont remplacés par l'événement interval:

{"channel : "<nom du canal auquel l'événement s'applique>", "action" : "interval", "occupancy" : 4, // Occupation du canal "timetoken" : "<Lorsque l'événement d'intervalle s'est produit>" }
Enter fullscreen mode Exit fullscreen mode

Intervalle

Vous pouvez configurer la fréquence de déclenchement de l'événement d'intervalle en modifiant l'option de configuration Interval. Des valeurs comprises entre 10 secondes et 300 secondes (5 minutes) sont autorisées.

Portal Configuration: Presence Interval

L'événement d'intervalle vous informera uniquement de l'occupation du canal, à moins que vous n'activiez les "deltas de présence

Délais de présence

Portal Configuration: Presence Deltas

Si l'option "Presence Deltas" est activée, l'événement d'intervalle comprendra également des informations sur les utilisateurs qui ont rejoint ou quitté le canal depuis l'événement d'intervalle précédent.

{"channel" : "<nom du canal auquel l'événement s'applique>", "action" : "interval", "occupancy" : 3, // Occupation du canal "join" : ["member4"], "leave" : ["member3"], "timetoken" : "<Lorsque l'événement d'intervalle s'est produit>" }
Enter fullscreen mode Exit fullscreen mode

Autres paramètres

Canal de notification actif

Il se peut que vous ne soyez pas intéressé par le nombre de clients connectés à un canal ou par l'identité de ces clients, mais que vous vous préoccupiez uniquement de savoir si quelqu'un est abonné à un canal. Si un canal compte 0 abonné, il est considéré comme inactif. Un canal qui compte 1 abonné ou plus est considéré comme actif.

Vous pouvez vous inscrire pour recevoir un avis lorsqu'un canal devient "actif" ou "inactif" en spécifiant un "canal d'avis actif".

Portal Configuration: Presence Active Notice Channel

Si vous le spécifiez, vous recevrez des messages sur ce canal (dans cet exemple, le nom du canal qui reçoit les messages est "notice_channel") :

{"channel" : "<nom du canal qui est devenu actif ou inactif>", "status" : "active", // ou inactive "precise_timestamp" : "<Lorsque l'événement d'intervalle s'est produit>" }
Enter fullscreen mode Exit fullscreen mode

Notez que les événements actifs sont envoyés dès que l'occupation du canal dépasse 0, mais que les événements de canal inactif ne sont déclenchés que si le canal a une occupation de 0 pendant 300 secondes ou plus.

Filtrage des flux

L'option permettant de désactiver le filtrage des flux est conservée pour des raisons historiques, et les développeurs ne tireront que peu d'avantages de la désactivation de ce paramètre. Le filtrage des flux inclura les métadonnées de présence dans les événements publiés sur les canaux de présence, ce qui permettra d'appliquer des filtres clients à ces événements de présence. La désactivation du filtrage des flux ne réduit pas le nombre d'événements de présence ; elle permet seulement au client de filtrer les événements qu'il reçoit. Pour réduire le nombre d'événements de présence, vous devez utiliser la gestion de la présence, expliquée plus loin dans cet article.

Portal Configuration: Presence Stream Filtering

Crochets Web

Auparavant, la page de configuration de l'ensemble de clés vous permettait de spécifier plusieurs webhooks qui seraient déclenchés lorsque l'un des événements suivants se produisait :

  • événement dejonction déclenché
  • événement dedépart déclenché
  • déclenchement de l'événementtimeout
  • événement d'intervalle déclenché
  • événement dechangement d'état déclenché
  • déclenchement d'un événement decanal actif ou inactif.

Ces webhooks ne font plus partie de la configuration de la boîte à boutons, mais ont été transférés dans la fonction Événements et actions. Les webhooks ne seront pas abordés dans le cadre de cet article, mais pour plus d'informations, veuillez vous référer à la section " Webhook Payload action" de la documentation "Events & Actions".

Changement d'état

Si vous souhaitez échanger des métadonnées associées à la présence du client, la meilleure façon d'y parvenir est d'utiliser la fonctionnalité État de présence. Par exemple, bien que les événements Join et Leave évoqués précédemment vous indiquent si le client est en ligne ou hors ligne, cela ne vous permet pas de savoir si l'utilisateur est "occupé" ou "ne pas déranger".

Un client peut utiliser le SDK PubNub pour définir un état personnalisé sur un canal ou un groupe de canaux spécifique. Une fois défini, cet état est propagé aux autres clients et reçu comme un événement de changement d'état.

{"channel" : "<nom du canal associé au changement d'état>", "uuid" : "<ID du client auquel l'état s'applique>", "action" : "state-change", "state" : {<JSON Object définissant l'état>} "occupancy" : 3, // Occupation du canal "timetoken" : "<Lorsque le changement d'état s'est produit>" }
Enter fullscreen mode Exit fullscreen mode

Le changement d'état est très flexible et peut être utilisé pour échanger n'importe quelle donnée sérialisable ; par exemple, notre démo de collaboration utilise l'état de présence pour notifier les auditeurs lorsqu'un événement de dessin se produit, permettant une application de dessin collaboratif, avec des gribouillis montrés à tous les spectateurs en temps réel.

"state" : {"x" : 5, "y" : 10, "color" : "#FFFF00"}  // Exemple de charge utile d'état pour une application de dessin
Enter fullscreen mode Exit fullscreen mode

Le*seul inconvénient des événements de changement d'état est qu'ils ne persistent pas*. Ils ne doivent donc être utilisés que pour des données éphémères ou des données dont le client doit assurer le suivi.

Contrôler les événements reçus à l'aide de la gestion des présences

Comme nous l'avons mentionné précédemment, le nombre d'événements de présence peut facilement devenir très important à mesure que votre base d'utilisateurs s'agrandit. Pour vous permettre de mieux contrôler les événements qui se déclenchent sur un canal donné, nous avons introduit l'outil en libre-service "Gestion de la présence", qui vous permet de créer des règles pour contrôler les événements de présence qui se déclenchent :

L'outil de gestion de la présence peut être lancé à partir du bouton approprié sur l'écran de configuration de la télécommande :

Portal Configuration: Presence Management

Vous pouvez également accéder à l'outil à partir du menu de gauche dans la section 'BizOps Workspace'.

Veuillez vous référer à la documentation sur la gestion de la présence pour une description complète de la manière de configurer vos règles de gestion, mais en résumé :

  1. Créez une nouvelle règle ; vous pouvez avoir plusieurs règles pour définir complètement les événements de présence que vous voulez déclencher pour votre application.
  2. Spécifiez les événements que cette règle doit contrôler, y compris la participation, le départ, le délai d'attente, le changement d'état et l'intervalle. Cet article traite de la nature de ces règles et de leur déclenchement.
  3. Spécifiez un motif de caractère générique pour définir le canal ou les groupes de canaux auxquels cette règle s'applique ; par exemple, personal-* s'appliquera à tous les canaux qui commencent par personal-.
  4. Cliquez sur "Créer" et définissez l'ordre dans lequel vos règles doivent s'appliquer.

Gestion de la présence via l'API PubNub

Vous pouvez recevoir des événements de présence par l'intermédiaire de l'un de nos SDK. Cet article se concentre principalement sur les événements de présence, qui sont reçus par l'intermédiaire de l'écouteur d'événements du SDK, mais nos API prennent également en charge des fonctions supplémentaires pour déterminer qui écoute sur un canal spécifique(here now) et où un utilisateur particulier est abonné(where now)

En JavaScript, l'API hereNow peut être appelée comme suit pour déterminer qui est abonné au canal spécifié :

try {
  const result = await pubnub.hereNow({
    channels: ["my_channel"],
    includeState: true,
    includeUUIDs: true
  });
  console.log(total occupancy:  + result.totalOccupancy)
} catch (status) {
  console.log(status);
}
Enter fullscreen mode Exit fullscreen mode

Plus de ressources

La présence est l'une des fonctionnalités les plus précieuses et les plus flexibles de la plateforme PubNub. Savoir exactement qui est en ligne et avoir une mise à jour de son statut en temps réel a permis à nos clients de construire des solutions fascinantes au fil des ans.

  • Notre documentation Presence Basics est un bon point de départ pour comprendre les concepts de la Présence.
  • Notre documentation sur l'abonnement donne des exemples montrant comment s'abonner à un canal où la présence est activée et renvoie à la documentation spécifique au SDK pour des exemples d'API montrant comment ajouter un rappel d'écoute pour les événements de présence (par exemple, cette page pour notre SDK JavaScript).
  • Pour aller plus loin, la plupart de nos tutoriels incluront la présence, et un bon point de départ pour les nouveaux développeurs est notre tutoriel "Getting Started", qui couvre plusieurs langages de programmation. Les didacticiels aborderont également d'autres fonctions de présence, telles que l'API "here now", qui permet de déterminer qui écoute sur un canal.

Enfin, si vous avez besoin d'aide ou de support, n'hésitez pas à contacter notre équipe de support dédiée à PubNub ou à envoyer un email à notre équipe de relations avec les développeurs à l'adresse devrel@pubnub.com.

Comment PubNub peut-il vous aider ?

Cet article a été publié à l'origine sur PubNub.com

Notre plateforme aide les développeurs à construire, fournir et gérer l'interactivité en temps réel pour les applications web, les applications mobiles et les appareils IoT.

La base de notre plateforme est le réseau de messagerie en temps réel le plus grand et le plus évolutif de l'industrie. Avec plus de 15 points de présence dans le monde, 800 millions d'utilisateurs actifs mensuels et une fiabilité de 99,999 %, vous n'aurez jamais à vous soucier des pannes, des limites de concurrence ou des problèmes de latence causés par les pics de trafic.

Découvrez PubNub

Découvrez le Live Tour pour comprendre les concepts essentiels de chaque application alimentée par PubNub en moins de 5 minutes.

S'installer

Créez un compte PubNub pour un accès immédiat et gratuit aux clés PubNub.

Commencer

La documentation PubNub vous permettra de démarrer, quel que soit votre cas d'utilisation ou votre SDK.

Top comments (0)