La présence utilisateur ne met pas à jour le serveur lorsque l'utilisateur ou le navigateur est inactif

Lorsque, dans le même écran, nous n’entrons que des canaux qui ont tous la valeur par défaut onlyWhenActive (qui est par défaut true lors de l’appel de channel.enter()) → le mauvais appel est effectué au serveur lors de l’inactivité pour mettre à jour ces canaux

Comment reproduire

  • Désactivez d’abord le plugin de chat s’il est activé (c’est important car les plugins de chat effectuent un appel dans tous les écrans à .enter({onlyWhenActive: false} avec l’option onlyWhenActive définie sur false)

  • Ajoutez un canal pour la démo. J’ai choisi topic-presence-display.js et j’ai ajouté ceci :

  @on("init")
  _init() {
    this._presentChannel = this.presence.getChannel('/presence-idle-demo');
    this._presentChannel.enter();
  },
  • Ouvrez n’importe quel sujet avec la console réseau du navigateur ouverte → vous devriez voir un premier appel à /presence/update

  • Minimisez la fenêtre du navigateur (avec l’onglet réseau ouvert) et attendez un peu plus de 10 secondes (c’est le temps d’inactivité par défaut du navigateur)

  • Rouvrez le navigateur et regardez le dernier appel effectué à /presence/update

Résultat actuel :

Alors qu’il devrait s’agir de leave_channels[]: /presence-idle-demo

J’ai ouvert une pull request :

6 « J'aime »

Félicitations pour le débogage minutieux et la découverte de la cause profonde… nous examinerons cela cette semaine et verrons si nous pouvons fusionner le correctif !

6 « J'aime »

@david a mené ce projet à terme et il est maintenant fusionné :tada:

Merci @AhmedLoud d’avoir soulevé ce point et d’avoir soumis une PR :clap:

7 « J'aime »