У меня есть буфер данных, который мне нужен для потоковой передачи на сервер веб-сокетов, размещенный вне системы, на которой я работаю,
Сначала я преобразовываю буфер в читаемый поток, как это, используя 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?
Любая помощь приветствуется.