NodeJS. Как считывать данные с потока.
![NodeJS. Как считывать данные с потока.](/images/articles/nodejs-readable-stream.png)
Всем привет! В этой статье мы рассмотрим, как сделать свой собственный настраиваемый поток в 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, а в следующей статье поговорим о том, как их туда записывать.
Спасибо за внимание!
-
-
Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.