Real-time

Fügt Payload einen Socket.IO-WebSocket-Server hinzu, der bei Änderungen an konfigurierten Collections Echtzeit-Events an Clients sendet.

Community 30 45/Wo. MIT v1.2.0

Installation

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

Über

Das Plugin startet während `onInit` der Payload-Konfiguration einen eigenständigen Socket.IO-Server und hängt die Instanz an `payload.io` an. Auf konfigurierten Collections registriert es `afterChange`-Hooks, die bei Erstellung oder Aktualisierung eines Dokuments ein `realtime:{slug}`-Event ausgeben. Das Event enthält die Operation, den Collection-Slug und das resultierende Dokument. Jede Collection lässt sich einzeln konfigurieren. Eine `room`-Resolver-Funktion empfängt das Dokument, die Operation und das vorherige Dokument und gibt einen Raumstring zurück, etwa `user:{userId}` oder `chat:{id}`. Ohne Rückgabewert wird das Event an alle verbundenen Clients gesendet. Über das `events`-Array lässt sich steuern, welche Operationen überhaupt Events auslösen. Da die Serverinstanz auf `payload.io` liegt, können eigene Hooks und Endpunkte beliebige Events an beliebige Räume senden, was Use Cases wie Chat oder Tipp-Indikatoren abdeckt. Socket.IO läuft als separater Server und nicht auf dem Next.js-HTTP-Server. Die `serverOptions` umfassen Port (Standard 3001) und CORS-Konfiguration. Mit `requireAuth: true` werden Socket-Verbindungen per JWT über die Payload-eigene Auth validiert, standardmäßig ist die Option deaktiviert. Ein `disabled`-Flag verhindert den Serverstart, ohne das Schema zu verändern. Für den Client liefert das Plugin den React-Hook `useRealtime` und die Klasse `PayloadRealtimeClient` mit. Beide übernehmen Verbindungszyklus, Raumverwaltung, Presence über `identify` und das Abonnieren von Collection- oder Custom-Events. `PayloadRealtimeClient` stellt zusätzlich `join`, `leave`, `on`, `emit` und `disconnect` bereit. Voraussetzungen sind `socket.io`, `socket.io-client` und Payload ab Version 3.37.0. In einigen Setups ist zudem das optionale Paket `bufferutil` nötig, um einen unmask-Fehler zu beheben.

Paketinformationen

Paketname
@alejotoro-o/payload-real-time
Neueste Version
1.2.0
Entpackte Größe
47 kB
Lizenz
MIT
Wöchentliche Downloads
45
Zuletzt veröffentlicht
31. Dez. 2025