Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/09/2013, 09:19
kikeking1
 
Fecha de Ingreso: junio-2009
Mensajes: 128
Antigüedad: 14 años, 10 meses
Puntos: 17
Cierre de sección automatico

Buenas comunidad, hoy le traigo un problemita de sessiones abiertas a ver si alguno me podeis echar un cable.

Tengo montado un sistema de usuarios, con su login tipico, validaciones y to la pesca, me apoyo en el uso de sockets, para gestionar las conexiones en tiempo real (cuando un usuario se desconecta o se conecta, se envia notificaciones al resto de usuarios en activos).

Hasta aqui todo genial y sin problemas, Cuando logeo, se informa al resto, cuando deslogeo se informa tambien. Pero hay una tercera variante que es la que me esta rompiendo totalmente la funcionabilidad del sistema y es cuando el usuario cierra la ventana del navegador y se pira, si haber pulsado en el boton de "offlogin", por lo tanto nunca se ejecuta mi script de desconexión, no se actualiza su estado en la bbdd y no se envia por socket al resto de usuarios su desconexión, quedando permanentemente on.

Como podemos observar esta es una cagada considerable en el sistema. He leido bastante sobre los eventos de javascript para lanzar un evento al momento de cerrar el navegador. Pero esta solución es incompleta, Opera no trabaja este evento, la mayoria de navegadores moviles tampoco, y tenemos la siempre presente posibilidad de desconexión por fallo en la red, se fue la covertura movil, por que se fue la luz y el pc se apago de golpe (o el movil/tablet se quedo sin pilas).

¿Alguien conoce la forma de hacer que el propio servidor detecte cuando un cliente deja de responder en el socket y automaticamente lanzara mi script de desconexión?

Seguramente no sea algo dificil (espero), pero caminar por senderos nuevos siempre nos provoca hacer preguntas tontas hasta que aprendemos las respuestas :D

Espero que puedan ayudarme.
Un saludo a la comunidad.