跳转到主要内容

概览

laravel-bluesky 提供了两条 WebSocket 命令,用来连接 Bluesky 的实时事件流。
  • Jetstream —— Bluesky 提供的、已经过滤的 WebSocket 端点。JSON 格式,比较轻量。
  • Firehose —— AT Protocol 的原始事件流。以 DAG-CBOR 二进制格式接收全部数据。
基于 WebSocket 的长时运行进程需要 VPS 或 EC2 等常驻服务器,或者 Laravel Cloud 的自定义 worker。它不能在 Laravel Vapor、Vercel 等无服务器环境中运行。

安装

WebSocket 功能依赖 Workerman

Jetstream

概览

Jetstream 是 Bluesky 提供的、已经预先过滤的 WebSocket 服务。可以按 collection 类型或用户 DID 过滤,从而只接收需要的事件,效率更高。

启动方式

collection 过滤

通过 -C 选项过滤要接收的 collection。可以多次指定。
常用 collection:

DID 过滤

通过 -D 选项只接收特定用户的事件。

事件处理

Jetstream 命令会根据接收到的消息类型派发 Laravel 事件。 创建事件监听器来处理事件。

Firehose

概览

Firehose 是 AT Protocol 的原始事件流。可以以二进制(DAG-CBOR)格式接收 Bluesky 网络上所有的 record 操作。
DAG-CBOR 的解码由包自动完成。在事件监听器中,你可以像使用普通 PHP 数组一样处理数据。

启动方式

事件处理

Firehose 命令也是通过 Laravel 事件来处理消息。

配置

可以在 config/bluesky.php 中修改连接目标主机和日志配置。
.env 配置示例:

与 Labeler 结合

可以同时启动 Labeler 服务器和 Jetstream / Firehose。Labeler 处理打 label 请求时可以利用 Jetstream 或 Firehose 的数据。
Labeler 的详情请参考 Labeler 页面

长时进程的运维

WebSocket 命令是长期运行的进程。在生产环境中,请使用 Supervisor 等进程管理工具。

Supervisor 配置示例

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

在 Laravel Forge 中配置守护进程

如果你使用 Laravel Forge,可以在 Daemons 部分添加守护进程。
  • Command: php artisan bluesky:ws start -C app.bsky.feed.post
  • Directory: /var/www/html
  • User: forge

在 Laravel Cloud 中配置后台进程

WebSocket 命令作为 WebSocket 客户端 连接到 Bluesky 的事件流,因此在 Laravel Cloud 上也能运行。将其作为 Laravel Cloud 的后台进程(自定义 worker)配置即可。 在 Laravel Cloud 的后台进程配置中添加 Custom Worker Jetstream:
Firehose:
部署时的进程停止与重启等操作,都会由 Laravel Cloud 自动处理。除了后台进程本身的配置外,不需要其他额外设置。

注意事项

  • 进程意外退出时,autorestart=true 会自动将其重启。
  • 为了避免内存泄漏,可以考虑定期重启。
  • 对于消息量巨大的 Firehose,建议把 listener 中的处理异步化(通过 Queue Job)。
最后修改于 2026年7月18日