РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗jsnsSpSsInr 174 of 201 menu
◀ ▶

Введение в поток событий сервера в Nest

Экран должен меняться, когда на сервере появилась новая строка списка, но клиент снова и снова открывает тот же адрес и сравнивает целиком полученное тело. Такой опрос тратит время и не даёт мгновенной картины.

Поток событий сервера держит один HTTP ответ открытым: браузер подписывается на адрес, а NodeJS шлёт текстовые фрагменты по мере готовности. Канал идёт только от сервера к клиенту, без постоянного сокета и без отдельного пакета для веб-сокетов.

В Nest такой адрес помечают встроенной меткой потока из @nestjs/common. Метод контроллера возвращает Observable из RxJS с элементами типа MessageEvent: каждый элемент превращается в строку протокола с полем data и необязательными служебными полями.

Источником событий служит тот же процесс приложения: массив в памяти, таймер RxJS или короткая цепочка операторов. База данных для демонстрации не нужна.

Дальше откроем поток на адресе, отправим одно сообщение с данными, настроим серию коротких тиков, корректно завершим поток после нескольких элементов и разберём ситуацию, когда поток сообщает об ошибке.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить