socket node example node.js websocket socket.io serverside-javascript

node.js - node - socket.io github



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

¿Y cuál es la diferencia? Cerrar la ventana, cortar el cable de Ethernet ... todo es lo mismo para el servidor: fin de la conexión.

Lectura de los documentos de socket.io: https://github.com/LearnBoost/socket.io/wiki/Exposed-events

socket.on (''disconnect'', function () {}): el evento de desconexión se activa en todos los casos, cuando se cierra la conexión cliente-servidor. Dispara en desconexiones deseadas, no deseadas, móviles, no móviles, de clientes y servidores.

No debe confiar en su botón, ya que las personas pueden desconectarse sin usar ese botón. Utilice el evento de desconexión y una vez que un socket se desconecta (un socket, no un usuario, porque el nodo solo conoce los sockets), tendrá que averiguar quién era el "propietario" de ese socket y marcarlo como "desconectado". O mejor aún, espera unos segundos y luego indúcialo como desconectado. ¿Por qué? Porque el evento de desconexión se activará incluso si el usuario simplemente recarga la página o navega a otra. Entonces, si espera unos segundos, el usuario volverá a estar conectado.

También tuve este problema, y ​​terminé creando un "observador" que se ejecuta cada X segundos y señala a los usuarios como desconectados cuando no poseen ningún socket o cuando parecen estar lejos (sin actividad durante mucho tiempo).

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ó su conexión o cerró la ventana del navegador sin desconectarse manualmente (mediante el botón de desconexión) ...

Este evento socket.io se activa solo cuando el usuario se desconecta no cuando perdió su conexión.

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

Quiero un buen mecanismo para vigilar a los usuarios a fin de actualizar mi lista de usuarios en línea.