¿Cómo arreglar que los miembros de Discourse sean desconectados?

Hmm. A medida que la gente usa los foros y lee temas, etc., si realizan alguna acción que genere un evento (crear_publicación, crear_tema, editar_publicación, etc.), recibo un mensaje a través del webhook. Esto le indica al sitio principal que siguen activos, por lo que puedo actualizar el valor de ‘Último clic’ en su sesión, evitando que se cierren. Como debería ser. Todo bien.

Sin embargo, si un miembro solo está leyendo mensajes durante un tiempo… su tiempo de inactividad en Discourse se reinicia cada vez que hacen algo (lo cual es bueno), pero mi sitio principal nunca recibe mensajes del webhook que indiquen que el usuario está activo. Así que, tras una hora sin ninguna actividad (parece que fueron a los foros y se alejaron del ordenador), el sitio principal asume que ya no están y los cierra sesión.

Parece que hay un hueco en la lógica aquí. Para una implementación correcta de SSO, ¿no debería haber una forma de que Discourse me informe si la sesión de un usuario está activa (incluso si solo están leyendo)? Quizás Discourse debería enviar un ping cada 5 minutos si el miembro está activo pero no ha generado otros mensajes del webhook.

O tal vez, cuando mi sitio considera que un usuario ha expirado, debería llamar a Discourse y preguntar si el usuario está activo allí. ¿Existe alguna forma de hacerlo? (Veo Is there an endpoint to check if a user is logged in - #3 by pfaffman, pero no estoy seguro de si es lo que necesito, y /session/current.json no aparece en la documentación de la API.) Eso generaría una gran cantidad de llamadas a la API, aunque: cierro sesión a unos 15-20 usuarios cada minuto en mi sitio por inactividad, por lo que tendría que hacer una llamada por cada uno (y posiblemente más de una llamada, si no tengo una caché local de su ID de Discourse).

Amigos, ¿qué opinan o aconsejan?