La presencia del usuario no se actualiza en el servidor al salir debido a inactividad del usuario o del navegador

Cuando en la misma pantalla solo ingresamos canales que tienen por defecto onlyWhenActive (que es verdadero por defecto al llamar a channel.enter()) → se realiza la llamada incorrecta al servidor al pasar a inactivo para actualizar estos canales.

Cómo reproducir

  • Primero deshabilita el plugin de chat si lo tienes habilitado (esto es importante porque los plugins de chat realizan una llamada en todas las pantallas a .enter({onlyWhenActive: false} con la opción onlyWhenActive establecida en falso).

  • Agrega un canal para la demostración. Elegí topic-presence-display.js y agregué esto:

  @on("init")
  _init() {
    this._presentChannel = this.presence.getChannel('/presence-idle-demo');
    this._presentChannel.enter();
  },
  • Abre cualquier tema con la consola de red del navegador abierta → deberías ver una primera llamada a /presence/update.

  • Minimiza la ventana del navegador (con la pestaña de red abierta) y espera un poco más de 10 segundos (este es el tiempo de inactividad del navegador por defecto).

  • Vuelve a abrir el navegador y mira la última llamada realizada a /presence/update.

Resultado actual:

Mientras que debería ser leave_channels[]: /presence-idle-demo.

Abrí una solicitud de extracción:

6 Me gusta

¡Felicitaciones por la cuidadosa depuración aquí y por encontrar la causa raíz… revisaremos esta semana y veremos si podemos fusionar la solución!

6 Me gusta

@david llevó esto a la meta y ahora está fusionado :tada:

Gracias @AhmedLoud por plantear esto y enviar un PR :clap:

7 Me gusta