Введение в поток событий сервера в Nest
Экран должен меняться, когда на сервере появилась новая строка списка, но клиент снова и снова открывает тот же адрес и сравнивает целиком полученное тело. Такой опрос тратит время и не даёт мгновенной картины.
Поток событий сервера держит один HTTP ответ открытым: браузер подписывается на адрес, а NodeJS шлёт текстовые фрагменты по мере готовности. Канал идёт только от сервера к клиенту, без постоянного сокета и без отдельного пакета для веб-сокетов.
В Nest такой адрес помечают встроенной
меткой потока из @nestjs/common.
Метод контроллера возвращает
Observable из RxJS с элементами
типа MessageEvent: каждый элемент
превращается в строку протокола
с полем data и необязательными
служебными полями.
Источником событий служит тот же процесс приложения: массив в памяти, таймер RxJS или короткая цепочка операторов. База данных для демонстрации не нужна.
Дальше откроем поток на адресе, отправим одно сообщение с данными, настроим серию коротких тиков, корректно завершим поток после нескольких элементов и разберём ситуацию, когда поток сообщает об ошибке.