Обрабатывать только первые x байтов потока, сохранять содержимое потока - PullRequest
0 голосов
/ 19 октября 2019

У меня есть функция, которая принимает поток

function processStream(stream) {

}

Другие функции обрабатывают этот поток после функции, поэтому его необходимо оставить нетронутым. Эта функция нуждается только в первых 20 байтах потока, который может быть длиной в гигабайты, чтобы завершить свою обработку. Я могу получить это через:

function processStream(stream) {
    const data = stream.read(20)

    return stream
}

Но, потребляя эти 20 байтов, мы изменили поток для будущих функций, поэтому мы рекомбинировали его. Какой самый быстрый способ сделать это?

1 Ответ

0 голосов
/ 19 октября 2019

В итоге я пошел с combined-streams2, чтобы быстро и эффективно объединить свои потоки:

const CombinedStream = require('combined-stream2')

function async processStream(stream) {
  const bytes = stream.read(2048)

  const original = CombinedStream.create()
  original.append(bytes)
  if (!stream._readableState.ended) {
    original.append(stream)
  }

  return original
}
...