サーバーにデータをPOSTするnodejsの短いプログラムを作成しました。残念ながら、このプログラムは失敗します。しかし、興味深いのは、リクエストが何をしているのかを見るためにwiresharkを使用していて、私が作ったリクエストと同じくらいたくさんのTCP SYNパケットが見えないということです。Nodejsがサーバーにsynリクエストを送信していない、エラーEHOSTUNREACH
プログラムはここに含まれています。
//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
})
})
}
どのように正確に動作していませんか?あなたは構文エラーを認識していますか? – adeneo
ああ、そうです。構文エラーは問題ではありませんが、実際のプログラム(これは問題のコードスニペットです)では、「エラー:ECONNHOSTUNREACH」と「未定義の応答」が表示されます。さらに、未定義の応答がある場合は、Wiresharkは「Syn」TCPパケットを送信していないことを示します。 –
これはNodeとは関係がありません。ファイアウォールのような、ネットワークスタック内に存在する可能性が高いため、問題の原因になっています。 cURLのようなツールを使ってPOSTリクエストを作成できますか? – robertklep