[Pregunta]: ¿Como hacer una alerta cuando se pierda la conexión con el servidor?

Iniciado por Leguim, 7 Julio 2020, 18:57 PM

0 Miembros y 1 Visitante están viendo este tema.

Leguim

Hola,

la idea es esa, mostrar un mensaje cuando un usuario pierda la conexión con el servidor... ya sea que el servidor se haya caído o que el usuario haya perdido la conexión a internet..

hace un tiempo había preguntado lo mismo, no me acuerdo bien pero en aquel momento alguien me dijo que podía hacerlo con ajax... la idea es hacerlo cuando el usuario haga una petición al servidor y entonces en ese momento detectar el estado de la conexión...

Espero estar haciendome entender, gracias...
Tampoco sé bien que clase de condicional se debe poner para saber el estado de conexión, imagino que no debe ser algo tan complicado de hacer...

EDIT:
¿esto me servirá para eso?

Código (php) [Seleccionar]

if(connection_aborted())
{
   // [...]
}

[u]nsigned

El tema de hacerlo con ajax es que vas a tener que hacer polling (ejecutar una consulta constantemente cada cierto tiempo) pero esto es muy ineficiente, y si estas en un dispositivo con batería aun más. Esto es debido a que el protocolo HTTP 1.1 es básicamente un protocolo desconectado y sin estado (stateless).

Para este tipo de cosas lo mejor es usar websockets, y concretamente la implementación mediante socket.io

Del lado del cliente funciona en JS. Del lado del servidor con Nodejs.

Tambien hay otras implementaciones de websockets para otros lenguajes, como PHP, pero si o si vas a necesitar tener acceso al servidor a nivel de SO ya que tu script de websocket del lado del servidor deberá estar corriendo constantemente....

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!

Leguim

Por eso descarte el método de ajax, mi idea no es hacerlo en "tiempo real" sino que hacerlo cuando el usuario haga una petición... por ejemplo cuando un usuario cargue un formulario (hasta ahí tiene conexión) pero luego cuando el presione un botón submit que es para enviar dicho formulario (en ese momento ya perdió la conexión) entonces se valida si tiene conexión o no... realmente nose si lo que yo estoy planteando tiene sentido ya que si ya no tiene conexión no se hasta que punto va a poder validarse algo si lógicamente ya no tiene conexión..  :-\

MinusFour

Cita de: MiguelCanellas en  8 Julio 2020, 03:11 AM
Por eso descarte el método de ajax, mi idea no es hacerlo en "tiempo real" sino que hacerlo cuando el usuario haga una petición... por ejemplo cuando un usuario cargue un formulario (hasta ahí tiene conexión) pero luego cuando el presione un botón submit que es para enviar dicho formulario (en ese momento ya perdió la conexión) entonces se valida si tiene conexión o no... realmente nose si lo que yo estoy planteando tiene sentido ya que si ya no tiene conexión no se hasta que punto va a poder validarse algo si lógicamente ya no tiene conexión..  :-\

En el caso de un formulario sencillo (sin JS) es el navegador el que navega a la nueva URL y envia la información (POST o GET). En ese caso, no estoy seguro si el navegador comparte los detalles de la navegación, lo más probable es que no.

Por otro lado, si usas JS para enviar la petición tanto XHR como fetch tiran un error que puedes capturar y mostrar una alerta.

Código (javascript) [Seleccionar]

fetch(url).catch(function(e){ alert('Problemas con la conexión/petición'); });


Código (javascript) [Seleccionar]

var req = new XMLHttpRequest();
req.addEventListener("error", function(e){
    alert('Problemas con la conexión/petición');
});
req.open("GET",url);
req.send();