<MyRusakov.ru />

Разработчик игр на Unreal Engine

Разработчик игр на Unreal Engine

Этот комплект с нуля всего за 7 месяцев сделает Вас Unreal-разработчиком. И при этом учиться достаточно 1 час в день.

Начнёте Вы с основ программирования, постепенно перейдя к C++. Затем очень подробно изучите Unreal Engine, и после научитесь программировать на C++ в Unreal Engine. В конце создадите крупный проект на C++ в Unreal Engine для своего портфолио.

Комплект содержит:

- 416 видеоуроков

- 95 часов видео

- 1024 задания для закрепления материала из уроков

- 3 финальных тестирования

- 4 сертификата

- 12 Бонусных курсов

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Какая тема Вас интересует больше?

NodeJS. Что такое pipe().

NodeJS. Что такое pipe().

Всем привет! В этой статье мы рассмотрим, что такое pipes в NodeJS, в чем преимущества и как это использовать.

Описание

Для начала давайте вспомним, что мы делали в прошлой статье. Мы создали поток для чтения и поток для записи, считывали данные в потоке для чтения с файла readMe.txt, слушали событие на получение данных и, как только оно срабатывало, мы использовали поток для записи, чтобы загрузить информацию, полученную с файла readMe.txt в файл writeMe.txt.

Этот процесс, где мы считываем данные с одного потока и записываем их в другой, в NodeJS встречается достаточно часто, и поэтому была придумана такая штука как pipes.

Что такое pipes

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

Давайте теперь перепишем наш предыдущий код с использованием pipe:

var myReadStream = fs.createReadStream(__dirname + '/readMe.txt', 'utf8');
var myWriteStream = fs.createWriteStream(__dirname + '/writeMe.txt');
myReadStream.pipe(myWriteStream);

Если вы запустите этот код, то увидите, что он работает так же, как и раньше.

Отправка данных клиенту

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

var server = http.createServer(function(request, response) {
  response.writeHead(200, {'Content-Type': 'text/plain'});
  var myReadStream = fs.createReadStream(__dirname + '/readMe.txt', 'utf8');
  myReadStream.pipe(response);
});

server.listen(3000, '127.0.0.1');
console.log('Прослушивание порта 3000');

Здесь мы создаем сервер, отправляем заголовки, а также данные при помощи метода pipe() клиенту по адресу 127.0.0.1:3000.

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

В чем преимущества данного подхода

Как вы уже, наверное, заметили, первое преимущество – это лаконичность кода. Нам теперь не нужно писать несколько потоков, писать для них события и отслеживать данные. Написали всего лишь один метод, и все работает.

Второе преимущество – это производительность. Поскольку данный метод уже встроен в платформу NodeJS, то он достаточно хорошо оптимизирован и, следовательно, используя его, вы повышаете производительность своего приложения.

Заключение

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

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

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (1):

akvarius_84@mail.ru [email protected] 20.07.2022 07:46:16

Очень странно. Данные отдаются кусочками и тут myReadStream.on('data', (chunk){ тут кусочками - chunk'ами }) и тут тоже кусочками myReadStream.pipe(myWriteStream) Так в чём тогда разница???

Ответить

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.