Я кант в файл-запрос HTTPS, он хорошо работает 99,9% звонков, но иногда (может быть, когда сервер или сеть не доступна) висит на неопределенный срок ...Тайм-аут обработки с node.js поток трубопровода
Это, очевидно, заставляет мое приложение перестать работать и требует перезагрузки вручную ...
У меня есть другие https-соединения, которые иногда зависают, которые всегда завершаются, используя следующий код ошибки на объекте запроса, как это предлагается в документации узла :
request.on('socket', function(socket) {
socket.setTimeout(10000);
socket.on('timeout', function() { request.abort(); });
});
request.on('error', function(e) {
// Handle the error...
console.error("FAILED!");
});
... но кажется, что таймауты в запросе игнорируются, если адресат передан в поток файлов, возможно, я должен обработать ошибку с тайм-аутом на объекте файловой системы, но документация не ясна, если есть событие I придется ждать, пока для «конца», за исключением ...
Вот пример кода, я надеюсь, что кто-то может помочь мне:
var https = require('https'),
fs = require('fs');
var opts = {
host: 'www.google.com',
path: '/',
method: 'GET',
port: 443
};
var file = fs.createWriteStream('test.html');
var request = https.request(opts, function(response) {
response.pipe(file);
file.on('finish', function() {
file.close(function(){
console.log("OK!");
});
});
});
request.on('socket', function(socket) {
socket.setTimeout(10000);
socket.on('timeout', function() { request.abort(); });
});
request.on('error', function(e) {
console.error("FAILED!");
});
request.end();
Если вы хотите попробовать повесить, изменить хозяина и путь с огромным файлом и отсоедините сетевой кабель во время передачи, он должен отключиться через 10 секунд, но он не ...
Проблема заключается в том, что «конец» также испускался, когда tansfer заканчивается не только тогда, когда он прерывается или прерывается, мне нужен способ обнаружения ошибок. – gabry