Skip to main content

Panoramica

laravel-bluesky offre due comandi WebSocket per collegarsi agli stream in tempo reale di Bluesky.
  • Jetstream — endpoint WebSocket con filtri, proprio di Bluesky. Leggero, in formato JSON.
  • Firehose — stream grezzo di eventi di AT Protocol. Riceve tutti i dati in formato binario DAG-CBOR.
I processi long-running via WebSocket richiedono un server sempre attivo, come VPS o EC2, oppure un custom worker di Laravel Cloud. Non funzionano in ambienti serverless come Laravel Vapor o Vercel.

Installazione

Per le funzionalità WebSocket è necessario Workerman.

Jetstream

Panoramica

Jetstream è il servizio WebSocket con filtraggio fornito da Bluesky. Puoi filtrare per tipo di collezione e DID utente, ricevendo solo gli eventi necessari in modo efficiente.

Come avviarlo

Filtro per collezione

Con l’opzione -C restringi le collezioni ricevute. Puoi specificarne più di una.
Collezioni principali:

Filtro per DID

Con l’opzione -D ricevi solo gli eventi di utenti specifici.

Gestione degli eventi

Il comando Jetstream emette eventi Laravel in base al tipo di messaggio ricevuto. Crea un listener per gestire gli eventi.

Firehose

Panoramica

Firehose è lo stream grezzo di eventi di AT Protocol. Ricevi in formato binario (DAG-CBOR) tutte le operazioni sui record della rete Bluesky.
La decodifica DAG-CBOR viene fatta automaticamente dal pacchetto. Negli event listener ricevi i dati come normali array PHP.

Come avviarlo

Gestione degli eventi

Anche il comando Firehose gestisce i messaggi tramite eventi Laravel.

Configurazione

In config/bluesky.php puoi modificare l’host di connessione e le impostazioni di logging.
Esempio di configurazione in .env:

Combinazione con Labeler

Puoi avviare contemporaneamente il server Labeler e Jetstream / Firehose. Puoi usare i dati di Jetstream o Firehose per gestire le richieste di labeling ricevute dal Labeler.
Per i dettagli su Labeler consulta la pagina Labeler.

Gestione dei processi long-running

I comandi WebSocket sono processi che restano attivi a lungo. In produzione usa uno strumento di gestione dei processi come Supervisor.

Esempio di configurazione Supervisor

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

Configurazione del daemon su Laravel Forge

Se usi Laravel Forge, aggiungi il daemon dalla sezione Daemons.
  • Command: php artisan bluesky:ws start -C app.bsky.feed.post
  • Directory: /var/www/html
  • User: forge

Configurazione dei processi in background su Laravel Cloud

I comandi WebSocket si connettono allo stream di Bluesky come client WebSocket, quindi funzionano anche su Laravel Cloud. Configurali come processi in background (custom worker) di Laravel Cloud. Nelle impostazioni dei processi in background di Laravel Cloud, aggiungi un Custom Worker. Per Jetstream:
Per Firehose:
L’arresto e il riavvio del processo al deploy sono gestiti automaticamente da Laravel Cloud. A parte la configurazione del processo in background non serve nient’altro.

Attenzione

  • Se il processo termina inaspettatamente, con autorestart=true si riavvia automaticamente.
  • Per evitare memory leak, valuta riavvii periodici.
  • Con Firehose, che riceve grandi quantità di messaggi, si consiglia di eseguire il lavoro nel listener in modo asincrono (Queue Job).
Ultima modifica il 13 luglio 2026