2017-07-25 4 views
0

Je fais une demande avec electron.js et j'ai atteint un point où j'ai besoin de faire une requête http pour appeler un php. Le temps de réponse au début était faible et l'application a échoué avant de recevoir des données. Ensuite, j'ai mis un timeOut sur le chemin HTTP afin que le temps d'attente pour la réponse du serveur augmente. Le problème esque est comme si le timeOut n'était pas, n'attend pas celui indiqué.délai de réponse sur la requête http

Savez-vous un moyen de résoudre ce problème?

var http = require('http'); 
    var options = { 
     timeout: 50000, 
     host: localStorage.getItem('server'), 
     port: localStorage.getItem('port'), 
     path: localStorage.getItem('directori') + '?nosession=1&call=ciberFiSessio&numSerie='+ localStorage.getItem("pc") 
    }; 
http.get(options, function(res) { 
     alert("hola"); 
     if (res.statusCode == 200){ 
     //reinicia(); 

     res.on('data', function (chunk) { 
      str = chunk; 
      alert(str); 

      var myJSON = JSON.parse(str); 
      //alert(myJSON.fi); 

      if(parseInt(myJSON.fi)==0){ 
      alert("Hi ha hagut un problema!"); 
      }else{ 
      reinicia(); 
      } 

     }); 

     }else{ 
     alert("El lloc ha caigut!"); 
     alert(res.statusCode); 
     } 
    }).on('error', function(e) { 
     alert("Hi ha un error: " + e.message); 
    }); 

Répondre

0

Utiliser la bibliothèque node-fetch, qui soutiennent des options plus complexes, et travaille également avec des promesses, ce qui est une approche moderne pour les applications async de conception. https://www.npmjs.com/package/node-fetch

Options prises en charge (de la documentation, timeout inclus)

{ 
    method: 'GET' 
    , headers: {}  // request header. format {a:'1'} or {b:['1','2','3']} 
    , redirect: 'follow' // set to `manual` to extract redirect headers, `error` to reject redirect 
    , follow: 20   // maximum redirect count. 0 to not follow redirect 
    , timeout: 0   // req/res timeout in ms, it resets on redirect. 0 to disable (OS limit applies) 
    , compress: true  // support gzip/deflate content encoding. false to disable 
    , size: 0   // maximum response body size in bytes. 0 to disable 
    , body: empty  // request body. can be a string, buffer, readable stream 
    , agent: null  // http.Agent instance, allows custom proxy, certificate etc. 
}