Real-time
Добавляет WebSocket-сервер Socket.IO в Payload для рассылки событий в реальном времени при изменении документов, с поддержкой комнат и React-хуком.
Установка
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 г.