HTTP-потоки Node.js
Используя собственный http.get()
в Node.js, я пытаюсь http.get()
HTTP-ответ потоку, с которым я могу связать data
и end
события.
В настоящее время я обрабатываю это для данных gzip, используя:
http.get(url, function(res) {
if (res.headers['content-encoding'] == 'gzip') {
res.pipe(gunzip);
gunzip.on('data', dataCallback);
gunzip.on('end', endCallback);
}
});
Gunzip - это поток, и это просто работает. Я пытался создавать потоки (писать потоки, затем читать потоки) и обрабатывать ответ, но не имел большой удачи. Любые предложения по тиражированию этой же сделки для контента без gzip?
Ответы
Ответ 1
Объект ответа из HTTP-запроса является экземпляром читаемого потока. Таким образом, вы должны собирать данные с событием data
, а затем использовать его, когда запускается end
событие.
var http = require('http');
var body = '';
http.get(url, function(res) {
res.on('data', function(chunk) {
body += chunk;
});
res.on('end', function() {
// all data has been downloaded
});
});
readable.pipe(dest)
будет в основном делать то же самое, если body
в приведенном выше примере является записываемым потоком.