Comment activer et configurer la présence PubNub
Published: 2024-05-14 07:13:27

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](https://img.youtube.com/vi/YGrrFUlO_Ys/0.jpg)](https://www.youtube.com/watch?v=YGrrFUlO_Ys)  
[Regarder la vidéo](https://www.youtube.com/watch?v=YGrrFUlO_Ys)

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](https://admin.pubnub.com?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr), 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](https://www.pubnub.com/cdn/3prze68gbwl1/7oSeiiPIy15BnZhVsZ3FsB/840c751c9826f614a75e00537e5d7967/portal_-_presence_on.png)

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](https://www.pubnub.com/cdn/3prze68gbwl1/5DOhGhHU4bj028AJecCu83/bacca2c768b2cf2fe25294adf73acdec/portal_-_presence_enable.png)

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

![Portal Configuration: Presence Confirm Changes](https://www.pubnub.com/cdn/3prze68gbwl1/2o4Ftz7WJeD3QA8TWPu9do/09c679b6e94617a702d0095b87d911c4/portal_-_save_changes.png)

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>" }
```

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>" }
```

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é>" }
```

### 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](https://www.pubnub.com/cdn/3prze68gbwl1/5wwJWjGkGOs9R0WFWsJgIu/b95da340d8265dab8edc83f69d94e348/portal_-_generate_leave_on_tcp_fin_or_rst.png)

### 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](https://www.pubnub.com/cdn/3prze68gbwl1/4j08CDBzBT3UOPoTraPoj4/e713d84db1011937c4c26700bc623e78/portal_-_debounce.png)

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](https://www.pubnub.com/cdn/3prze68gbwl1/5YNhk0OXtAoi9JYG2TpN3H/3ad226821767b7e806f8867806b83e1a/portal_-_announce_max.png)

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>" }
```

### 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](https://www.pubnub.com/cdn/3prze68gbwl1/6c0nFLx1IzyRD4ky0xoixt/06b7ec3a799b8b15a07e2902019ab7d7/portal_-_interval.png)

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](https://www.pubnub.com/cdn/3prze68gbwl1/13VfH53S8l6KdQ8ap18PUp/0f843d5a9eb2e7cf40fd8c0e51b36d6f/portal_-_presence_deltas_on.png)

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>" }
```

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](https://www.pubnub.com/cdn/3prze68gbwl1/41uqM2t7RZbv7OhYQ0Sdnp/5a7bc69d5bfc4d0c35be69e8f99b1448/portal_-_active_notice_channel_populated.png)

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>" }
```

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](https://www.pubnub.com/docs/general/channels/subscribe#message-filters?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr) à 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](https://www.pubnub.com/cdn/3prze68gbwl1/7MVxG7hUQ8T8txFn8ceil2/b7239d86329c74585defe51e15dbb855/portal_-_stream_filtering.png)

### 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 de`jonction` déclenché
-   événement de`départ` déclenché
-   déclenchement de l'événement`timeout`
-   événement d'`intervalle` déclenché
-   événement de`changement d'état` déclenché
-   déclenchement d'un événement de`canal 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"](https://www.pubnub.com/docs/serverless/events-and-actions/events#webhook-payload?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr) 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>" }
```

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
```

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](https://www.pubnub.com/cdn/3prze68gbwl1/3L5SZ54NPceHIcBn0hRDIg/9fd5c24690e40a9a05d616acb0900d6d/portal_-_presence_management.png)

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](https://www.pubnub.com/docs/bizops-workspace/presence-management?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr) 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](https://www.pubnub.com/docs/sdks/javascript/api-reference/presence?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr) peut être appelée comme suit pour déterminer qui est abonné au canal spécifié :

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

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](https://www.pubnub.com/docs/general/presence/overview?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr) est un bon point de départ pour comprendre les concepts de la Présence.
-   Notre [documentation sur l'abonnement](https://www.pubnub.com/docs/general/channels/subscribe?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr) 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](https://www.pubnub.com/docs/sdks/javascript/api-reference/publish-and-subscribe#add-listeners?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr) 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"](https://www.pubnub.com/tutorials/getting-started-chat-sdk/?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr), 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](https://support.pubnub.com/hc/en-us?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr) ou à envoyer un email à notre équipe de relations avec les développeurs à l'adresse [devrel@pubnub.com](mailto:devrel@pubnub.com).

Comment PubNub peut-il vous aider ?
===================================

Cet article a été publié à l'origine sur [PubNub.com](https://www.pubnub.com/how-to/admin-portal-presence/?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr)

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](https://www.pubnub.com/tour/introduction/?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr) pour comprendre les concepts essentiels de chaque application alimentée par PubNub en moins de 5 minutes.

S'installer
-----------

Créez un [compte PubNub](https://admin.pubnub.com/signup/?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr) pour un accès immédiat et gratuit aux clés PubNub.

Commencer
---------

La [documentation PubNub](https://www.pubnub.com/docs?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr) vous permettra de démarrer, quel que soit votre cas d'utilisation ou votre [SDK](https://www.pubnub.com/docs?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr).