Всем привет! В этом материале рассмотрим, как сделать свой собственный настраиваемый поток в NodeJS .

NodeJS. Как считывать данные с потока.

Всем привет! В этом материале рассмотрим, как сделать свой собственный настраиваемый поток в NodeJS.

В прошлой статье мы рассмотрели, что такое потоки и буферы и как они работают. В этой же – создадим свой собственный поток.

Есть два типа потоков, которые мы можем написать в NodeJS: writable and readable. Какая между ними разница?

Writeable streams – позволяют NodeJS записывать данные и отправлять их.

Readable streams – позволяют NodeJS считывать информацию с потока.

Мы также можем написать поток, который сможет делать и то, и другое – Duplex.

Когда мы отправляем ответ клиенту в NodeJS, мы отправляем ему некоторые данные. В этом случае мы будем говорить о writeable stream, потому что мы будем записывать данные в поток, которые потом будут отправлены клиенту. И наоборот: если NodeJS получает данные откуда-то, то мы будем использовать readable stream, потому что мы будем считывать данные с потока.

Создайте файл readMe.txt, где напишите какой-нибудь текст на несколько сотен строк. Теперь зайдите в app.js и напишите следующее:

var http = require('http');
var fs = require('fs');
var myReadStream = fs.createReadStream(__dirname + '/readMe.txt', 'utf8');
myReadStream.on('data', function(chunk) {
  console.log('Получен новый объем данных: ');
  console.log(chunk);
});

Итак, что здесь происходит? Сначала мы подключаем нужные нам модули, затем создаем переменную myReadStream, в которую будут поступать маленькие объемы данных из метода createReadStream(), в котором мы указываем полный путь до нашего файла readMe.txt, а также кодировку, чтобы данные отобразились в нужном нам виде.

Теперь мы вешаем событие на нашу переменную, чтобы делать что-то, когда придут новые данные. Как только приходят новые данные, то вызывается анонимная функция, в которой мы с помощью функции console.log() выводим текст о получении нового объема данных, а также сами эти данные из переменной chunk.

Если вы запустите app.js, то увидите, что вам выведится весь текст, который вы ввели в файле readMe.txt, но разбитый на несколько кусочков.

В принципе, ничего сложного тут нет, однако это значительно ускорит работу вашего сайта при действительно больших объемах данных.

Итак, на этом сегодня все. Мы рассмотрели, как создать поток для считывания данных в NodeJS, а в следующей статье поговорим о том, как их туда записывать.

Спасибо за внимание!