Verificar el estado de Internet, sesion del usuario y otros errores vía javascript
Publicado por Deimos el11/Feb/2018 - 12:19 AM

Dependiendo de tu aplicación web, quizá requieras comprobar la conexión de Internet desde el cliente, existen varias maneras para hacerlo, de hecho hay una buena librería para ello: https://github.com/HubSpot/offline, sin embargo, debido a algunos requerimientos extras que necesitaba realicé esto por mi cuenta de la siguiente manera.
Básicamente se trata de solicitar un recurso ajax que nos podrá decir si hay conexión de Internet, si no la hay, si hay un fallo interno en el servidor, o incluso, si la sesión del usuario ha caducado.
// By +DEIMOS+
$.ajax({
url: 'tu_recurso_ajax',
dataType: 'json',
cache: false,
success: function (data) {
if ('status' in data && data.result == 'on_line') {
alert('Estás en línea');
} else {
alert('Error desconocido');
}
},
error: function (data) {
switch (true) {
case (data.status === 200 && (data.responseText).indexOf('Mi App Inicio Sesion') != -1):
alert('Tu sesión ha expirado');
break;
case (data.status >= 500 && data.status < 600):
alert('Ocurrió un error interno en el servidor.');
break;
case (data.status === 0):
alert('No es posible conectar con el servidor, revisa tu conexión de internet.');
break;
default:
alert('Error desconocido');
break;
}
}
});
Como podemos ver, solicitamos vía ajax un recurso de tipo JSON, que debería regresar un dato como éste:
{
‘status’: ‘on_line’
}
Si todo va bien, se ejecuta el código esperado, la ventaja es que podemos hacerlo más interesante y hacer que el servidor nos de más mensajes de estado, dependiendo de nuestras necesidades.
Ahora, si se ha perdido la conexión a Internet el campo status de data será 0, podemos ver también si ha ocurrido un error interno en nuestro servidor y, por último, tenemos la capacidad de saber si la sesión del usuario ya expiró, esto se logra al buscar el texto “Mi App Inicio Sesion” en la página de retorno, ya que no es un formato JSON.
Como últimas recomendaciones:
Si deseas implementarlo, utiliza callbacks en lugar de utilizar variables externas a la función y vernos obligados a modificar la opción async de $.ajax.
Además sería una buena opción agregar una etiqueta oculta en la página de inicio de sesión para la búsqueda del string, de manera que si se modifica por alguna razón no afecte nuestro funcionamiento.
Luis Manuel Ramírez +DEIMOS+