Descripción general
laravel-bluesky proporciona dos comandos WebSocket para conectarse a los streams en tiempo real de Bluesky.
- Jetstream: endpoint WebSocket con filtrado propio de Bluesky. Ligero, en formato JSON.
- Firehose: stream de eventos crudo de AT Protocol. Recibe todos los datos en formato binario DAG-CBOR.
Instalación
La funcionalidad WebSocket requiere Workerman.Jetstream
Descripción general
Jetstream es un servicio WebSocket con filtrado proporcionado por Bluesky. Como se puede filtrar por tipo de colección o por DID de usuario, puedes recibir eficientemente solo los eventos que necesitas.Cómo iniciarlo
Filtro por colección
Con la opción-C puedes restringir las colecciones que quieres recibir. Se pueden indicar varias.
Filtro por DID
Con la opción-D recibes solo los eventos de usuarios concretos.
Procesamiento de eventos
El comando Jetstream dispara eventos de Laravel según el tipo de mensaje recibido.
Crea un listener para procesar los eventos.
Firehose
Descripción general
Firehose es el stream de eventos crudo de AT Protocol. Recibe todas las operaciones de record de la red Bluesky en formato binario (DAG-CBOR).La decodificación DAG-CBOR la realiza el paquete automáticamente. En los listeners recibes los datos como arrays PHP normales.
Cómo iniciarlo
Procesamiento de eventos
El comando Firehose también usa eventos de Laravel para procesar los mensajes.Configuración
Enconfig/bluesky.php puedes cambiar el host de conexión y la configuración de logs.
.env:
Combinación con Labeler
Puedes iniciar el servidor Labeler junto con Jetstream / Firehose. El Labeler puede aprovechar los datos de Jetstream o Firehose para procesar las solicitudes de etiquetado que recibe.Para más detalles sobre Labeler, consulta la página Labeler.
Operación de procesos de larga duración
Los comandos WebSocket son procesos que permanecen activos durante mucho tiempo. En producción, usa una herramienta de gestión de procesos como Supervisor.Ejemplo de configuración de Supervisor
/etc/supervisor/conf.d/bluesky-jetstream.conf:
Configuración de daemons en Laravel Forge
Si usas Laravel Forge, añade el daemon desde la sección Daemons.- Command:
php artisan bluesky:ws start -C app.bsky.feed.post - Directory:
/var/www/html - User:
forge
Configuración de procesos en segundo plano en Laravel Cloud
Los comandos WebSocket actúan como cliente WebSocket que se conecta al stream de Bluesky, por lo que también funcionan en Laravel Cloud. Configúralos como proceso en segundo plano (custom worker) de Laravel Cloud. En la configuración de procesos en segundo plano de Laravel Cloud, añade un Custom Worker. Para Jetstream:Laravel Cloud gestiona automáticamente la parada y el reinicio del proceso durante el despliegue. Aparte de la configuración del proceso en segundo plano, no hace falta configuración adicional.
Consideraciones
- Si el proceso termina inesperadamente, se reiniciará automáticamente con
autorestart=true. - Para evitar fugas de memoria, considera reiniciarlo periódicamente.
- En Firehose, que recibe muchos mensajes, se recomienda que el procesamiento dentro del listener sea asíncrono (Queue Job).
Source: src/Console/WebSocket