Real-time
Fügt Payload einen Socket.IO-WebSocket-Server hinzu, der bei Änderungen an konfigurierten Collections Echtzeit-Events an Clients sendet.
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