Как приостановить / возобновить читаемый поток, созданный из Passthrough в Typescript? - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть буфер данных, который мне нужен для потоковой передачи на сервер веб-сокетов, размещенный вне системы, на которой я работаю,

Сначала я преобразовываю буфер в читаемый поток, как это, используя Passthrough,

const bufferStream = new stream.PassThrough();
bufferStream.end(bufferData);

Затем я использую обработчик событий для чтения, читаю данные и отправляю порции данных через веб-сокет,

bufferStream.on('readable', () => {
            let dataChunk;
                // tslint:disable-next-line:no-conditional-assignment
            while ( (dataChunk = bufferStream.read(messageSize) ) != null ) {
             // sending chunk over websockets
            }
          });

И когда все данные прочитаны, я закрываюкак сокет,

bufferStream.on('end', () => {
     socket.close(1000, 'Normal Closure');
});

Мой вопрос здесь, я должен быть в состоянии приостановить и возобновить потоковую операцию, как при запросах пользователя.

Я посмотрел документацию по читаемым потокам ипохоже, если я использую «читаемый» обработчик событий, пауза и возобновление не будут работать.

Я также пытался использовать обработчик события «data», но мне нужно прочитать фрагменты определенного размера и далее »обработчик событий data, считывает все данные одновременно.

Есть ли способ, которым я смогу приостановить и возобновить поток, пока у меня остается та же логика для чтения данных.Возможно, передать некоторые параметры конструктору PassThrough?

Любая помощь приветствуется.

...