Skip to main content

Overzicht

laravel-bluesky biedt twee WebSocket-commands om verbinding te maken met de realtime streams van Bluesky.
  • Jetstream — Het eigen, voorgefilterde WebSocket-endpoint van Bluesky. Lichtgewicht, in JSON-formaat.
  • Firehose — De ruwe eventstream van het AT Protocol. Ontvangt alle data in binair DAG-CBOR-formaat.
Voor langdurig draaiende processen via WebSocket heb je een permanent draaiende server zoals een VPS of EC2 of een custom worker op Laravel Cloud nodig. In serverless omgevingen zoals Laravel Vapor en Vercel werkt het niet.

Installatie

Voor de WebSocket-functionaliteit is Workerman nodig.

Jetstream

Overzicht

Jetstream is de voorgefilterde WebSocket-service van Bluesky. Je kunt filteren op collectietype en gebruikers-DID, zodat je efficiënt alleen de events ontvangt die je nodig hebt.

Starten

Collectiefilter

Met de optie -C beperk je welke collecties je ontvangt. Je kunt er meerdere opgeven.
Belangrijkste collecties:

DID-filter

Met de optie -D ontvang je alleen events van specifieke gebruikers.

Events verwerken

Het Jetstream-command stuurt Laravel-events uit op basis van het type van het ontvangen bericht. Maak een eventlistener om de events te verwerken.

Firehose

Overzicht

De Firehose is de ruwe eventstream van het AT Protocol. Je ontvangt alle recordbewerkingen op het Bluesky-netwerk in binair (DAG-CBOR-)formaat.
Het decoden van DAG-CBOR doet het pakket automatisch. In je eventlisteners ontvang je de data als gewone PHP-arrays.

Starten

Events verwerken

Ook het Firehose-command verwerkt berichten via Laravel-events.

Configuratie

In config/bluesky.php kun je de host en de loginstellingen wijzigen.
Voorbeeldconfiguratie in .env:

Combineren met de Labeler

Je kunt de Labeler-server en Jetstream/Firehose tegelijk starten. De data van Jetstream of de Firehose kun je gebruiken bij het verwerken van labelverzoeken die de Labeler ontvangt.
Zie de Labeler-pagina voor details over de Labeler.

Langdurig draaiende processen beheren

De WebSocket-commands zijn processen die lang blijven draaien. Gebruik in productie een procesmanager zoals Supervisor.

Voorbeeld van een Supervisor-configuratie

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

Daemon-configuratie in Laravel Forge

Gebruik je Laravel Forge, voeg dan een daemon toe via de sectie Daemons.
  • Command: php artisan bluesky:ws start -C app.bsky.feed.post
  • Directory: /var/www/html
  • User: forge

Achtergrondprocessen instellen op Laravel Cloud

De WebSocket-commands verbinden als WebSocket-client met de streams van Bluesky en werken daarom ook op Laravel Cloud. Stel ze in als achtergrondproces (custom worker) van Laravel Cloud. Voeg in de achtergrondprocesinstellingen van Laravel Cloud een Custom Worker toe. Voor Jetstream:
Voor de Firehose:
Het stoppen en herstarten van processen bij een deploy wordt volledig automatisch afgehandeld door Laravel Cloud. Buiten het instellen van het achtergrondproces is er geen extra configuratie nodig.

Aandachtspunten

  • Als een proces onverwacht stopt, wordt het met autorestart=true automatisch herstart.
  • Overweeg periodieke herstarts om geheugenlekken te voorkomen.
  • Bij de Firehose, die enorme aantallen berichten ontvangt, wordt aanbevolen om de verwerking in je listener asynchroon te maken (met een queue-job).
Laatst gewijzigd op 6 september 2026