Necesito poder detectar cuando un usuario ha perdido la conexión al socket, no parece que se llame a socket.on("disconnect")
cuando cierro mi portátil, por lo que no funciona ejecute la llamada ajax que debe ejecutarse para actualizar la base de datos y marcar al usuario como desconectado. ¿Cómo podría verificar si la conexión se ha cerrado o lo que sea?Socket IO detectar cuando el cliente ha perdido la conexión
Respuesta
nos encontramos con esto también y como se mencionó anteriormente utilizar nuestro propio temporizador de latido.
Por ejemplo, el servidor emitirá un latido cada 5 segundos (enviamos simplemente la hora del servidor). El cliente tiene un tiempo de espera de 11 segundos por lo que tiene 2 oportunidades de alcanzar el latido del corazón. Si recibe el latido del corazón, reiniciamos el temporizador. Si extrañamos ambos latidos, se ejecuta la función de tiempo de espera y usted hace lo que quiera allí.
Bastante sencillo.
Como se menciona aquí https://github.com/LearnBoost/Socket.IO/wiki/Configuring-Socket.IO, Socket.IO tiene su propia implementación de latido. Pero los valores predeterminados son un intervalo de 25 segundos y un umbral de 60 segundos para una conexión perdida.
Así que mi consejo: Establezca los valores predeterminados como espera en las pruebas. De lo contrario, puede perder el umbral.
Ejemplo:
socket.set("heartbeat timeout", 10);
socket.set("heartbeat interval", 5);
Esta debería ser la respuesta aceptada. Funciona la primera vez ... En mi caso, el tiempo de espera y el intervalo se establecen en milisegundos, por lo que 10000 en lugar de 10 ... ¡Gracias perfectos! –
- 1. socket, detectar la conexión se pierde
- 2. Cómo saber si el cliente ha cerrado la conexión
- 3. android browser and socket io
- 4. NodoJS socket IO deja de emitir aleatoriamente?
- 5. SignalR: detectar estado de conexión en el cliente
- 6. Detectar desconexión de socket en WCF
- 7. Socket IO | ¿Cómo obtener el tipo de transporte del cliente en el servidor?
- 8. ¿Cómo puedo detectar que TadoConnection haya perdido la comunicación con el servidor?
- 9. ¿Cómo establecer el tiempo de espera en la conexión de socket del cliente?
- 10. Cómo detectar un Desconexión de Socket en C#
- 11. jQuery averiguando si parent ha perdido 'focus'
- 12. ¿Cómo puedo hacer una conexión de socket de cliente a cliente (navegadores)?
- 13. Obteniendo el error 'ECONNREFUSED' cuando la conexión del socket se establece en un host diferente
- 14. Valgrind informa que la memoria 'posiblemente se ha perdido' cuando se usan tipos de datos glib
- 15. La conexión de socket fue abortado - CommunicationException
- 16. C Sockets: evitar basura cuando el socket está cerrado
- 17. Detectando el cierre de la conexión del cliente en node.js
- 18. ¿Por qué este servidor que escribo no detecta que el cliente ha cerrado el socket?
- 19. Javascript: detectar cuando la página ha sido navegada "atrás" a
- 20. ¿Cómo detectar la desconexión del cliente en el escucha de socket PHP?
- 21. GZipStream funciona pero la extensión se ha perdido
- 22. Oracle.DataAccess.Client.OracleException ORA-03135: contacto perdido de conexión
- 23. Conexión de cliente a servidor utilizando Socket.io
- 24. Conexión persistente con el cliente
- 25. Cómo usar backbone.js con websockets/socket-io/nowjs
- 26. ¿El puerto cambia cuando el servidor acepta una conexión TCP?
- 27. Java detectar conexión perdida
- 28. ¿Cómo encontrar el estado de conexión del socket en C?
- 29. Prueba conexión de socket en Python
- 30. ¿Nuevo subproceso por conexión de cliente en el servidor de socket?
I propondría que tiene un oyente, o un 'latido del corazón' que comprueba los clientes para una respuesta desde el servidor. Eso es lo que hago. –
Hice esto en una versión anterior de mi sitio web, aunque con suficientes usuarios en un momento dado parece que puede ser una especie de sobrecarga en el servidor, en cuanto al número de solicitudes, aunque puede ser el mejor, y única opción. –
socket.io usa un latido del corazón, así que estoy seguro de que es factible – EhevuTov