IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AJAX Discussion :

Attendre le retour du serveur (embarqué)


Sujet :

AJAX

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 15
    Points : 9
    Points
    9
    Par défaut Attendre le retour du serveur (embarqué)
    Bonjour,

    Je bricole dans l'embarqué (ESP8266) et cherche à faire une animation pendant que le module redémarre.
    Pour le moment, j'ai utilisé la fonction XMLHttpRequest évidemment avec l'évènement timeout.
    Je demande au serveur une page précise mais avec un passage de valeur aléatoire pour ne pas recevoir une copie du cache.
    Tant que le module n'est pas reparti, cela se passe bien.
    Mais, dès que ce dernier répond, je me retrouve avec une page du navigateur indiquant que "Le serveur à l’adresse 192.168.0.126 met trop de temps à répondre."

    Peut-être que parmi vous, certains auront des suggestions voire de solutions éprouvées.

    D'avance merci

    Thoma

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 401
    Points : 15 766
    Points
    15 766
    Par défaut
    montrez-nous le code que vous utilisez.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 15
    Points : 9
    Points
    9
    Par défaut
    Voici le code sans prétention :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    var r;
    var mc=22;
     
    function tc()
    {
        if(r.readyState===4)
        {
            st=r.status;
            if(((st>=200)&&(st<300))||(st===304))
            {
                document.location.href='info.html';
            }
        }
    }
     
    function tt()
    {
        mc-=1;
        if(mc>0)
        {
            document.getElementById('msg').innerHTML=mc;
            setTimeout(sr,2500);
        }
        else
        {
            document.getElementById('test').innerHTML='Impossible de contacter le module';
        }
    }
     
    function sr()
    {
        r=new XMLHttpRequest();
        r.addEventListener('load',tc,false);
        r.addEventListener('timeout',tt,false);
        r.timeout=2000;
        r.open('HEAD','http://'+window.location.hostname+'/info.html?rand='+Math.random(),true);
        r.send();
    }
     
    setTimeout(sr,10000);

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 401
    Points : 15 766
    Points
    15 766
    Par défaut
    je n'ai pas réussi à faire fonctionner votre code avec Firefox et Apache.

    puisque j'ai plus l'habitude d'utiliser jQuery, j'ai essayé le code suivant pour savoir si le serveur est lancé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    		const url = `http://${window.location.hostname}/info.html-sr?rand=` + Math.random();
    		console.log(`url = ${url}`);
     
    		$.ajax({
    			"url" : url,
    			"method" : "HEAD",
    			"timeout" : 2000,
    		})
    			.done(function(data, textStatus, jqXHR) {
     
    				console.log("réponse du serveur bien reçue");
     
    			})
    			.fail(function(jqXHR, textStatus, errorThrown) {
     
    				if ("" === errorThrown) {
    					console.log("serveur non accessible");
    				} else {
    					console.log("erreur serveur non gérée");
    					console.log(`textStatus = ${textStatus}`);
    					console.log(`errorThrown = ${errorThrown}`);
    				}
     
    			})
    		;

  5. #5
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    2000 ça me paraît court comme timeout, peut-être que le module n’a simplement pas le temps de répondre.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 15
    Points : 9
    Points
    9
    Par défaut
    Bonsoir,

    @Watilin :

    Le timeout initial est de 10s... puis on teste avec un intervalle de 2s...

    @ mathieu :

    J'ai essayé le bout de code avec quelques petites modifications pour me rendre compte que la page mettait trop de temps à charger...
    En rallongeant le délai avant la remise à zéro du système embarqué, cela fonctionne.

    Thoma

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Attendre le retour du formulaire -- comme un msgbox
    Par Mustard007 dans le forum IHM
    Réponses: 2
    Dernier message: 05/01/2007, 18h40
  2. [Vb6] Attendre le retour d'un form
    Par Zaal dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 02/10/2006, 13h46
  3. [MySQL]Problème serveur embarqué !!
    Par julio_boss dans le forum Bases de données
    Réponses: 2
    Dernier message: 10/05/2006, 11h31
  4. serveur embarqué?
    Par afrikha dans le forum Débuter
    Réponses: 2
    Dernier message: 07/10/2005, 15h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo