En mi aplicación web, cuando un usuario inicia sesión, agrego su Id a un vector de Ids válidos en el servlet, cuando cierra la sesión, elimino su Id del vector, por lo que puedo ver cuántos usuarios actuales están activos , si un usuario se olvida de cerrar la sesión, mi servelt hTML generado tiene:¿Cómo detectar el cierre del navegador?
<meta http-equiv="Refresh" content="30; url=My_Servlet?User_Action=logout&User_Id=1111">
en la etiqueta para que ingrese a cabo de forma automática.
Pero he notado que muchos usuarios están ahí para siempre, nunca se han desconectado. Descubrí por qué, al cerrar sus navegadores, nunca se desconectaban de forma manual o automática, por lo que sus identificadores de usuario nunca se eliminarán del vector Ids de usuario válido.
Entonces, mi pregunta es: ¿cómo detecto a los usuarios que cierran sus navegadores, por lo que mi servlet puede eliminar sus Id del vector?
que ver algo de luz al final del túnel, pero todavía hay un problema, mi programa tiene algo como esto:
activa Lista de usuarios:
User_1 : Machine_1 [ IP_1 address ]
User_2 : Machine_2 [ IP_2 address ]
User_3 : Machine_3 [ IP_3 address ]
...
¿Cómo saber, del oyente de la sesión, qué sesión del usuario ha finalizado y, por lo tanto, eliminarlo de mi lista?
Esperaba que cuando la sesión termine, se llamaría al método destroy()
del HttpServlet y puedo eliminar el Id del usuario allí, pero nunca se llama cuando el usuario cierra su navegador, ¿por qué? ¿Y hay algún otro método en el HttpServlet al que se llama cuando se cierra una sesión?
BTW - No tengo idea de cómo el código he vinculado a trabajará en un entorno agrupado/VM múltiples. Sospecho que no muy bien. –
Este enlace http://www.stardeveloper.com/articles/display.html?article=2001112001&page=1 está roto. Actualiza tu respuesta – OO7