Nodejs没有发送syn请求到服务器,错误EHOSTUNREACH

我在nodejs中写了一个简短的程序,它应该将数据发送到服务器。 不幸的是,这个程序失败。 然而有趣的是,我使用wireshark来查看请求正在做什么,而且我没有看到与我所做的请求一样多的TCP SYN数据包。

该程序包含在这里。

//ServerTestv1.js var request = require('request'); var grouper = require('./grouper'); //Placeholder program. function sendSomething(obj){ request.post(obj, function(error, response, body){ if(response == undefined){ //This happens sometimes. I 'unno why. reject(error); console.log('Undefined POST Response, ' + error); } else if(response.statusCode != 201 || error){ reject(error); console.log(error + response.statusCode + " " + response.body); } else if(response.statusCode == 201){ resolve(body); //Resolves the returned object, with unqiue ID. } }) } function inputParser(url, objArray){ var pArray = []; for(var i = 0; i < objArray.length; i++){ pArray.push(sendSomething(objArray[i])); } Promise.all(promArray).then(function(returnedValues){ //Handles the unique ID the server assigned to the object. var otherArray = []; for(var u = 0; u < returnedValues.length; u++){ var relatedObj = { "value" : Math.random() * 10, "relatedTo" : returnedValues[i].identifier } otherArray.push(sendSomething(relatedObj)); } Promise.all(otherArray).then(function(values){ grouper.doSomething(values); //Placeholderfunction }) }) } 

当有大量的并发请求时,我发现有时在DNS中出现这种情况。 该错误通常不是ECONNHOSTUNREACH错误,但感觉这可能是相关的东西。

你的obj数组是否包含你的API服务的域名? 如果是这样,请尝试使用IP而不是域名,并查看问题是否仍然存在。 你可以通过这样的事情做到这一点:

 require('dns').resolve4('domain.name', (err, addresses) => { ip = addresses[0]; } ); 

希望这可以帮助!

可能是你充斥着请求,并因此超时的一些请求。

https://www.sitepoint.com/making-http-requests-in-node-js/可能会有帮助&#x3002;