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

Завершение потока в Nest

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

Оператор take в цепочке RxJS ограничивает число элементов. Когда счётчик исчерпан, наблюдаемая последовательность завершается сама, Nest закрывает HTTP ответ и освобождает ресурсы в NodeJS.

Покажем на примере постов:

import { Controller, MessageEvent, Sse } from '@nestjs/common'; import { interval, map, Observable, take } from 'rxjs'; @Controller('posts') export class PostController { @Sse('stream') streamLimited(): Observable<MessageEvent> { return interval(300).pipe( take(3), map((tick) => ({ data: { tick }, })), ); } }

Ограничьте поток в WorkerController несколькими событиями с коротким интервалом, чтобы после последнего тика соединение завершилось штатно.

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