Al utilizar la función de tiempo de espera de javascript, debe asegurarse de que si el usuario realiza llamadas AJAX, su función debe restablecerse, ya que debe tratarse como actividad del usuario.
Si el servidor que utiliza push usa websockets, es posible que no pueda orientar a los usuarios que no tengan los navegadores más recientes. Puede que tenga que usar algunos marcos de señalización e incluso cambiar su pila de backend. (Puedo pensar en socket.io & SignalR a partir de ahora)
Ambos enfoques no van a degradarse con gracia. Por lo tanto, la opción de IMO javascript suena mejor, ya que puede dirigirse a un público más amplio y eso requeriría abordar algunos escenarios de casos extremos. Si tuviera una opción, no implementaría esta función en absoluto. Pero apenas sucede de esa manera.
ACTUALIZACIÓN: Aquí hay otro enfoque que podría pensar.
Cada vez que se sirve una página, enviaría una cookie a la que se puede acceder desde el lado del cliente que contendría la hora UTC en la que se agotó el tiempo de espera de la sesión. En mi código colocaría un setInterval que leería el valor y compararía la hora local con UTC y si se cerrara, mostraría una ventana emergente diciendo que el tiempo de espera ocurrirá en X segundos, etc.
Esto nuevamente no se degrada con gracia y depende del tiempo de la máquina del cliente. Entonces, si es incorrecto, esta funcionalidad no funcionará de manera confiable.
Esto es incluso seguro. El tiempo de espera de la sesión del lado del cliente se puede evitar fácilmente inyectando código js de la misma manera que a través de un complemento que actualiza el contador cada (tiempo de cierre de sesión - 1) –