Real-time

Добавляет WebSocket-сервер Socket.IO в Payload для рассылки событий в реальном времени при изменении документов, с поддержкой комнат и React-хуком.

Сообщество 30 45/нед MIT v1.2.0

Установка

pnpm add @alejotoro-o/payload-real-time

Описание

Плагин запускает отдельный сервер Socket.IO в ходе `onInit` конфигурации Payload и прикрепляет его к `payload.io`. На настроенных коллекциях регистрируются хуки `afterChange`, которые при создании или обновлении документа отправляют событие `realtime:{slug}`. Каждое событие содержит тип операции, slug коллекции и сам документ, так что фронтенд может подписываться на конкретные коллекции. Рассылку можно ограничить отдельными комнатами. Для каждой коллекции задаётся функция `room`, принимающая документ, тип операции (`create` или `update`) и предыдущую версию документа. Если функция возвращает строку, событие уходит только в эту комнату; если `undefined`, событие получает каждый подключённый клиент. Через массив `events` можно ограничить, какие операции будут генерировать события. На стороне клиента плагин предоставляет React-хук `useRealtime` и отдельный класс `PayloadRealtimeClient` с методами `join`, `leave`, `identify`, `onCollection`, `on`, `emit` и `disconnect`. Они управляют соединением, входом и выходом из комнат, подпиской на события коллекций и произвольные события. Поскольку экземпляр сервера доступен через `payload.io`, любые собственные хуки или эндпоинты могут отправлять события в произвольные комнаты, например для чата или индикатора набора текста. Сервер Socket.IO работает как отдельный процесс, а не на HTTP-сервере Next.js. Порт и CORS настраиваются через `serverOptions` (порт по умолчанию 3001). Опция `requireAuth` включает проверку JWT через `payload.auth` при подключении сокетов, по умолчанию она выключена. Флаг `disabled` позволяет не запускать сервер, сохранив схему коллекций. Плагин построен на `socket.io` и `socket.io-client`, требует `payload` версии не ниже 3.37.0. На некоторых конфигурациях может потребоваться установить опциональный пакет `bufferutil` для устранения ошибки unmask.

О пакете

Имя пакета
@alejotoro-o/payload-real-time
Последняя версия
1.2.0
Размер
47 кБ
Лицензия
MIT
Загрузок в неделю
45
Последняя публикация
31 дек. 2025 г.