cómo detectar la conexión de ese usuario se pierde o cerró la ventana del navegador en Nodejs socket.io

Tengo una aplicación de chat en Node.js y Socket.io, el usuario puede conectarse y desconectarse con un botón ... Tengo una lista de usuarios en línea que se gestiona perfectamente con la ayuda de mis eventos definidos que el usuario activa.

Pero el problema es que no puedo detectar si el usuario perdió la conexión o cerró la ventana del navegador sin desconectarse manualmente (con el botón de desconexión) ...

Este evento socket.io se dispara solo cuando el usuario se desconecta a sí mismo no cuando perdió su conexión.

socket.on('disconnect',function(){
   console.log('user disconnected');  });

Quiero algún mecanismo realmente bueno para vigilar a los usuarios para actualizar mi lista de usuarios en línea.

Respuestas a la pregunta(1)

Su respuesta a la pregunta