Skip to main content

Vue d’ensemble

laravel-bluesky fournit deux commandes WebSocket permettant de se connecter aux flux en temps réel de Bluesky.
  • Jetstream — Endpoint WebSocket propre à Bluesky avec filtrage préappliqué. Léger, au format JSON.
  • Firehose — Flux d’événements bruts d’AT Protocol. Reçoit toutes les données au format binaire DAG-CBOR.
Les processus WebSocket de longue durée nécessitent un serveur toujours actif comme un VPS ou EC2 ou un worker personnalisé Laravel Cloud. Ils ne fonctionnent pas dans des environnements serverless comme Laravel Vapor ou Vercel.

Installation

La fonctionnalité WebSocket requiert Workerman.

Jetstream

Vue d’ensemble

Jetstream est un service WebSocket avec filtrage préappliqué fourni par Bluesky. Vous pouvez filtrer par type de collection ou par DID utilisateur, ce qui permet de recevoir efficacement uniquement les événements nécessaires.

Méthode de démarrage

Filtre par collection

L’option -C restreint les collections à recevoir. Plusieurs valeurs sont possibles.
Principales collections :

Filtre par DID

L’option -D permet de recevoir uniquement les événements d’utilisateurs spécifiques.

Traitement des événements

La commande Jetstream déclenche des événements Laravel selon le type de message reçu. Créez un listener d’événement pour traiter les événements.

Firehose

Vue d’ensemble

Firehose est le flux brut d’événements d’AT Protocol. Il reçoit toutes les opérations d’enregistrements du réseau Bluesky au format binaire (DAG-CBOR).
Le décodage DAG-CBOR est effectué automatiquement par le package. Dans les listeners d’événements, vous recevez les données sous forme de tableau PHP standard.

Méthode de démarrage

Traitement des événements

La commande Firehose utilise également les événements Laravel pour traiter les messages.

Configuration

Vous pouvez modifier l’hôte de connexion et la configuration des logs dans config/bluesky.php.
Exemple de configuration dans .env :

Combinaison avec Labeler

Vous pouvez démarrer simultanément un serveur Labeler et Jetstream / Firehose. Les données de Jetstream ou Firehose peuvent être utilisées pour traiter les requêtes d’étiquetage reçues par le Labeler.
Pour plus de détails sur Labeler, consultez la page Labeler.

Exploitation des processus de longue durée

Les commandes WebSocket sont des processus qui restent actifs longtemps. En production, utilisez un outil de gestion de processus comme Supervisor.

Exemple de configuration Supervisor

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

Configuration du daemon Laravel Forge

Si vous utilisez Laravel Forge, ajoutez un daemon depuis la section Daemons.
  • Command : php artisan bluesky:ws start -C app.bsky.feed.post
  • Directory : /var/www/html
  • User : forge

Configuration des processus en arrière-plan sur Laravel Cloud

Les commandes WebSocket se connectent au flux Bluesky en tant que client WebSocket, elles fonctionnent donc aussi sur Laravel Cloud. Configurez-les comme processus en arrière-plan (worker personnalisé) de Laravel Cloud. Ajoutez un Custom Worker dans la configuration des processus en arrière-plan de Laravel Cloud. Pour Jetstream :
Pour Firehose :
Les arrêts et redémarrages de processus lors des déploiements sont tous gérés automatiquement par Laravel Cloud. Aucune configuration supplémentaire n’est nécessaire en dehors de la configuration du processus en arrière-plan.

Points d’attention

  • Si le processus se termine de manière inattendue, il est redémarré automatiquement grâce à autorestart=true.
  • Pour éviter les fuites mémoire, envisagez des redémarrages périodiques.
  • Pour Firehose, qui reçoit un grand nombre de messages, il est recommandé de rendre asynchrone le traitement dans les listeners (Queue Job).
Dernière modification le 13 juillet 2026