💻 Программирование [Michael Guay] NestJS + Next.js: событийно-ориентированная архитектура (2026)

  • ОФОРМИТЬ ПОДПИСКУ

Calvin Candie

Вечный

Calvin Candie

Вечный
2 Сен 2018
55,531
13,537
Автор: Michael Guay
Название: NestJS + Next.js: событийно-ориентированная архитектура (2026)

1793616498471.png

[Michael Guay] NestJS + Next.js: Event Driven Architecture (2026)

Язык: английский

Если вы пишете бэкенд на NestJS, а фронтенд на Next.js, и при этом обновляете данные кнопкой «Обновить» или постоянными запросами к серверу, этот материал поможет перейти на мгновенные обновления. Michael Guay показывает рабочий способ: сервер сам отправляет изменения в браузер, а интерфейс реагирует на них сразу.

Большой инфраструктуры для этого не нужно. Отдельный сервер WebSocket, брокер сообщений и сложная настройка не требуются. Хватает встроенных возможностей NestJS и стандартного механизма потоковой передачи данных, который уже есть в браузере. В итоге вы собираете цепочку от события на сервере до изменения компонента на экране и понимаете, как работает каждое звено.

Материал пригодится тем, кто делает уведомления, отслеживает фоновые задачи или собирает дашборды с живыми данными. Он даёт понятную схему, которую можно перенести в свой проект почти без изменений. Материал на английском языке, все примеры кода разобраны по шагам.

По шагам разбирается, как объединить NestJS и Next.js в одну событийно-ориентированную архитектуру с помощью EventEmitter и Server-Sent Events (SSE). Так можно строить приложения с обновлениями в реальном времени и не усложнять систему.

Что такое событийно-ориентированная архитектура:
В этом подходе части приложения обмениваются информацией через события. Один модуль сообщает, что что-то произошло, а другие модули на это реагируют. Модулям не нужно знать друг о друге напрямую, поэтому взаимодействие становится проще, а приложение легче масштабировать.

Почему это важно для современных веб-приложений:
  • Мгновенная реакция интерфейса без перезагрузки страницы.
  • Чистая логика между сервисами и компонентами благодаря слабой связности.
  • Готовность к масштабированию при увеличении нагрузки и числа модулей.
Как NestJS обрабатывает события:
В NestJS есть встроенный EventEmitter. С его помощью внутри приложения легко создавать события, отправлять их и подписываться на них.

Основные возможности EventEmitter в NestJS:
  • Генерация пользовательских событий.
  • Подписка сервисов на события.
  • Асинхронная обработка событий.
В разделе есть пример простого события: вызов this.eventEmitter.emit('task.completed', { id: 123 }) сообщает, что задача с идентификатором 123 выполнена.

Использование Server-Sent Events (SSE) для связи с Next.js:
SSE даёт серверу возможность отправлять данные на фронтенд одним непрерывным потоком в одну сторону. Для обновлений в реальном времени этого достаточно.

Почему SSE удобно использовать с NestJS и Next.js:
  • Простота реализации без WebSocket-инфраструктуры.
  • Нативная поддержка стримминга в браузере.
  • Идеально подходит для событий, которые идут только от сервера.
Далее разобран пример SSE-эндпоинта в NestJS. Это метод контроллера с декораторами @Get('events') и @Sse(). Через fromEvent он превращает событие 'task.completed' из EventEmitter в поток, на который может подписаться клиент.

Интеграция с Next.js:
На фронтенде Next.js без труда подключается к SSE-потоку, и интерфейс обновляется в реальном времени. В примере компонента внутри useEffect создаётся объект EventSource для адреса /api/events. В обработчике onmessage входящие данные разбираются через JSON.parse и выводятся как новое событие. При размонтировании компонента соединение закрывается методом close().

Применение в реальных проектах:
Эта архитектура подходит для многих задач.

Типичные сценарии использования:
  • живые уведомления пользователей;
  • мониторинг фоновых задач и очередей;
  • обновления прогресса операций;
  • динамические дашборды и аналитика.
Итоги:
Вместе NestJS, Next.js, EventEmitter и SSE дают мощную и гибкую основу для приложений, работающих в реальном времени. Если освоить событийно-ориентированную архитектуру, можно делать быстрые, отзывчивые и хорошо масштабируемые интерфейсы.

Для кого подойдёт:
  • Fullstack-разработчикам, которые используют связку NestJS и Next.js
  • Бэкенд-разработчикам на Node.js, которые хотят освоить работу с событиями в NestJS
  • Фронтенд-разработчикам, которым нужно выводить данные от сервера в реальном времени
  • Тем, кто ищет более простую замену WebSocket для обновлений в одну сторону
Что получите:
  • Понимание принципов событийно-ориентированной архитектуры
  • Навык генерации и обработки событий через EventEmitter в NestJS
  • Готовый пример SSE-эндпоинта на NestJS
  • Пример подключения компонента Next.js к SSE-потоку через EventSource
  • Схему для уведомлений, мониторинга задач, индикаторов прогресса и живых дашбордов

Подробнее:
Скрытое содержимое доступно для зарегистрированных пользователей!

Скачать:
 

Похожие темы