Node.js Пипетирование одного и того же читаемого потока в несколько (доступных для записи) целей

Мне нужно запустить две команды последовательно, которые должны читать данные из одного потока. После передачи потока в другой буфер очищается, поэтому я не могу снова прочитать данные из этого потока, так что это не работает:

var spawn = require('child_process').spawn;
var fs = require('fs');
var request = require('request');

var inputStream = request('http://placehold.it/640x360');
var identify = spawn('identify',['-']);

inputStream.pipe(identify.stdin);

var chunks = [];
identify.stdout.on('data',function(chunk) {
  chunks.push(chunk);
});

identify.stdout.on('end',function() {
  var size = getSize(Buffer.concat(chunks)); //width
  var convert = spawn('convert',['-','-scale',size * 0.5,'png:-']);
  inputStream.pipe(convert.stdin);
  convert.stdout.pipe(fs.createWriteStream('half.png'));
});

function getSize(buffer){
  return parseInt(buffer.toString().split(' ')[2].split('x')[0]);
}

Запрос жалуется на это

Error: You cannot pipe after data has been emitted from the response.

и изменениеInputStream вfs.createWriteStream даёт такую же проблему конечно. Я не хочу писать в файл, ноповторное использование в некотором роде поток, которыйзапрос производит (или любой другой в этом отношении).

Есть ли способ повторно использовать читаемый поток, когда он заканчивает трубопровод? Каков был бы лучший способ выполнить что-то вроде приведенного выше примера?

Ответы на вопрос(5)

Ваш ответ на вопрос