У меня есть вот такая функция:
icingaapi.prototype.getHostFiltered = function (filter, callback) {
var self = this;
var options = {
hostname: self.url,
port: self.port,
path: '/v1/objects/hosts/',
method: 'POST',
rejectUnauthorized: false,
auth: self.user + ":" + self.pass,
headers: {
"Accept": "application/json",
"Content-Type": "applicatoin/json"
}
}
var req = https.request(options, (res) => {
res.on('data', (d) => {
if (res.statusCode == "200") {
console.log("DATA: " + d);
var output = JSON.parse(d);
return callback(null, output.results);
} else {
return callback({
"Statuscode": res.statusCode,
"StatusMessage": res.statusMessage
}, null);
}
});
res.on('end', function(){
console.log("Res end###################");
})
});
req.write(JSON.stringify(filter));
req.end();
req.on('error', (e) => {
return callback(e, null);
});
}
Проблема в том, что "ответ" приходит не полным, я так думаю, что соеденение "req.end();" закрывается быстрее, чем приходят все данные. Если к примеру данных мало, то всё работает нормально.
Можно как-то дождаться пока всё придёт и потом только вызвать "req.end();"?
Я попытался сделать,
res.on('end', function(){
req.end();
})
но "req.end();" одновременно и стартует это всё. Кто может подсказать как надо правильно сделать?