node.js - Obtener el estado de conexión en el cliente Socket.io
(4)
Estoy usando Socket.io, y me gustaría saber el estado de conexión al servidor desde el lado del cliente.
Algo como esto:
socket.status // return true if connected, false otherwise
Necesito esta información para proporcionar una retroalimentación visual al usuario si la conexión se interrumpió o se desconectó por algún motivo.
La respuesta de @ robertklep para verificar socket.connected es correcta, excepto para el evento de reconexión, https://socket.io/docs/client-api/#event-reconnect Como el documento dice que está "Encendido en una reconexión correcta" pero cuando se comprueba socket.connected
entonces es falso.
No estoy seguro de que sea un error o intencional.
Puede comprobar la propiedad socket.connected
:
var socket = io.connect();
console.log(''check 1'', socket.connected);
socket.on(''connect'', function() {
console.log(''check 2'', socket.connected);
});
Se actualiza dinámicamente, si la conexión se pierde, se establecerá en false
hasta que el cliente vuelva a tomar la conexión. Tan fácil de verificar con setInterval
o algo así.
Otra solución sería detectar eventos de disconnect
y rastrear el estado usted mismo.
Puede verificar si la conexión se perdió o no usando esta función:
var socket = io( /**connection**/ );
socket.on(''disconnect'', function(){
//Your Code Here
});
Espero que te ayude.
Seguimiento del estado de la conexión a ti mismo. Con un booleano. Establézcalo en false
en la declaración. Utilice los diversos eventos (conectar, desconectar, reconectar, etc.) para reasignar el valor booleano actual. Nota: el uso de características de la API no documentadas (por ejemplo, socket.connected
) no es una buena idea; la característica podría eliminarse en una versión posterior sin que se mencione la eliminación.