Skip to main content

Überblick

laravel-bluesky stellt zwei WebSocket-Kommandos zur Verbindung mit Blueskys Echtzeit-Stream bereit.
  • Jetstream – Blueskys eigener, vorgefilterter WebSocket-Endpunkt. Leichtgewichtig im JSON-Format.
  • Firehose – Der rohe Eventstream des AT Protocols. Empfängt alle Daten im binären DAG-CBOR-Format.
Für langlaufende Prozesse per WebSocket benötigen Sie einen dauerhaft laufenden Server (VPS, EC2 o. Ä.) oder einen Custom Worker in Laravel Cloud. In serverlosen Umgebungen wie Laravel Vapor oder Vercel funktioniert das nicht.

Installation

Für die WebSocket-Funktionen wird Workerman benötigt.

Jetstream

Überblick

Jetstream ist ein von Bluesky bereitgestellter, vorgefilterter WebSocket-Dienst. Sie können nach Collection-Typ oder Nutzer-DID filtern und so gezielt nur die benötigten Events empfangen.

Start

Collection-Filter

Mit der Option -C beschränken Sie die empfangenen Collections. Mehrfachangabe möglich.
Wichtige Collections:

DID-Filter

Mit der Option -D empfangen Sie nur Events bestimmter Nutzer.

Event-Verarbeitung

Das Jetstream-Kommando löst je nach empfangener Nachricht Laravel-Events aus. Erstellen Sie einen Event-Listener zur Verarbeitung.

Firehose

Überblick

Firehose ist der rohe Eventstream des AT Protocols. Er empfängt sämtliche Record-Operationen im Bluesky-Netzwerk in binärer Form (DAG-CBOR).
Das Decodieren von DAG-CBOR erledigt das Paket automatisch. In Event-Listenern erhalten Sie die Daten als gewöhnliches PHP-Array.

Start

Event-Verarbeitung

Auch das Firehose-Kommando verarbeitet Nachrichten über Laravel-Events.

Konfiguration

In config/bluesky.php können Sie Zielhosts und Log-Einstellungen anpassen.
Beispiel für .env:

Kombination mit Labeler

Labeler-Server und Jetstream/Firehose lassen sich gemeinsam starten. Daten aus Jetstream oder Firehose können für die Verarbeitung von Labeling-Requests im Labeler genutzt werden.
Details zum Labeler finden Sie auf der Labeler-Seite.

Betrieb langlaufender Prozesse

WebSocket-Kommandos sind dauerhaft laufende Prozesse. Verwenden Sie in Produktivumgebungen ein Prozess-Management-Tool wie Supervisor.

Supervisor-Konfigurationsbeispiel

/etc/supervisor/conf.d/bluesky-jetstream.conf:

Daemon-Konfiguration in Laravel Forge

Wenn Sie Laravel Forge verwenden, fügen Sie den Daemon im Bereich Daemons hinzu.
  • Command: php artisan bluesky:ws start -C app.bsky.feed.post
  • Directory: /var/www/html
  • User: forge

Konfiguration als Hintergrundprozess in Laravel Cloud

Die WebSocket-Kommandos verbinden sich als WebSocket-Clients mit den Bluesky-Streams und funktionieren daher auch in Laravel Cloud. Konfigurieren Sie sie als Hintergrundprozess (Custom Worker) in Laravel Cloud. Fügen Sie in der Hintergrundprozess-Konfiguration von Laravel Cloud einen Custom Worker hinzu. Für Jetstream:
Für Firehose:
Prozessstopps und Neustarts beim Deployment übernimmt Laravel Cloud automatisch. Außer der Hintergrundprozess-Konfiguration ist keine weitere Einrichtung nötig.

Hinweise

  • Beendet sich der Prozess unerwartet, wird er über autorestart=true automatisch neu gestartet.
  • Um Memory-Leaks vorzubeugen, sollten Sie regelmäßige Neustarts in Erwägung ziehen.
  • Bei Firehose mit hohem Nachrichtenaufkommen empfiehlt sich, die Verarbeitung im Listener asynchron (über einen Queue-Job) zu erledigen.
Zuletzt geändert am 13. Juli 2026