Membri di Discourse vengono disconnessi - come risolvere?

Mmh. Mentre gli utenti utilizzano i forum e leggono gli argomenti, ecc., se compiono un’azione che genera un evento (create_post, create_topic, edit_post, ecc.), ricevo un messaggio tramite webhook. Questo informa il sito principale che sono ancora attivi, permettendomi di aggiornare il valore ‘Ultimo click’ nella loro sessione ed evitare il logout. Come dovrebbe essere. Tutto a posto.

Tuttavia, se un membro si limita a leggere i messaggi per un po’… il tempo di inattività su Discourse viene resettato ogni volta che compie un’azione (il che è positivo), ma il mio sito principale non riceve alcun messaggio webhook che indichi che l’utente è attivo. Quindi, dopo un’ora senza alcuna attività (sembra che siano andati sul forum e si siano allontanati dal computer), il sito principale presume che siano fuori gioco e li disconnette.

Sembra esserci un buco nella logica. Per un’implementazione SSO corretta, non dovrebbe esserci un modo per cui Discourse mi informi se la sessione di un utente è attiva (anche se stanno solo leggendo)? Forse Discourse dovrebbe inviare un ping ogni 5 minuti se il membro è attivo ma non ha generato altri messaggi webhook.

Oppure, quando il mio sito pensa che un utente sia scaduto, dovrei chiamare Discourse e chiedere se l’utente è attivo lì. Esiste un modo per farlo? (Vedo Is there an endpoint to check if a user is logged in - #3 by pfaffman ma non riesco a capire bene se sia quello che mi serve, e /session/current.json non è documentato nell’API.) Questo genererebbe un’enorme quantità di chiamate API: sul mio sito disconnetto circa 15-20 utenti al minuto per inattività, quindi dovrei chiamare per ciascuno (e forse più di una chiamata, se non ho una cache locale del loro ID Discourse).

Amici, cosa ne pensate/consigliate?