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 в приведенном выше примере является записываемым потоком.