2017-02-27 3 views
0

Ich habe einige ECONNREFUSED mit 'request' Modul, aber einige Zeit, um meine Anfrage passe ohne Fehler O_o ... Also ich meine Anfrage recurcive machen aber die problème nicht lösen ...NodeJS anfordern ECONNREFUSED

let request  = require("request"); 
let currency = 'btceur'; 
let data = []; 
let url    = "https://api.cryptowat.ch/markets/kraken/" + currency + "/price"; 
let nbTry   = 0; 
let nbMaxTry  = 5; 
let callbackRequest = (error, response, body) => { 
    if (error || response.statusCode != 200) { 
     console.log('error', 'error, retry ' + (nbTry + 1) + "/" + nbMaxTry); 
     console.log(error); 
     if (nbTry <= nbMaxTry) { 
      nbTry++; 
      request(url, callbackRequest); 
     } else { 
      console.log(data); 
     } 
    } else { 
     let bodyjson    = JSON.parse(body); 
     bodyjson.result.currency = currency; 
     data.push(bodyjson.result); 
     console.log(data); 
    } 
}; 
request(url, callbackRequest); 

Konsolenausgabe:

error error, retry 1/5 
{ Error: connect ECONNREFUSED 69.164.196.116:443 
    at Object.exports._errnoException (util.js:1022:11) 
at exports._exceptionWithHostPort (util.js:1045:20) 
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1090:14) 
    code: 'ECONNREFUSED', 
    errno: 'ECONNREFUSED', 
    syscall: 'connect', 
    address: '69.164.196.116', 
    port: 443 } 
[ { price: 1113.5, currency: 'btceur' } ] 

Antwort

2

api.cryptowat.ch löst zu zwei IP-Nummern, 23.239.28.55 und 69.164.196.116. Letzteres gibt Probleme (auch für mich).

Sie könnten versuchen, die ehemalige für jede Anforderung als vorübergehende Lösung verwenden:

let url = "https://23.239.28.55/markets/kraken/" + currency + "/price"; 

Es scheint nicht ein Host Header zu müssen, obwohl es wahrscheinlich besser wäre, wenn Sie sowieso passiert:

request({ url, headers : { Host : 'api.cryptowat.ch' } }, callbackRequest); 
+0

Ja, die Konstante IP löste das ähnliche Problem mit Promise.all. –

Verwandte Themen