You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Lighthouse GraphQL订阅不生效、广播无响应如何排查?

问题排查与解决步骤

1. 首要检查:Lighthouse订阅功能是否开启

你遇到的订阅类无日志、broadcast返回null、extensions中channel为null的问题,绝大多数是因为Lighthouse的订阅开关默认关闭:

  • 打开config/lighthouse.php,找到subscriptions配置项,确认enable设为true:
'subscriptions' => [
    'enable' => true, // 默认值为false,必须手动修改
    // 其余配置保持默认即可
]
  • 修改后执行php artisan config:clear清除配置缓存。

2. 修复Playground订阅端点配置

你直接配置Pusher的WS地址作为订阅端点是错误的,GraphQL Playground需要先连接你本地/线上的Lighthouse订阅端点,由Lighthouse和Pusher做后端通信,不能直连Pusher的WS接口:

  • 修改.env中的GRAPHQL_PLAYGROUND_SUBSCRIPTION_ENDPOINT为你自己的服务端点:
# 本地开发示例
GRAPHQL_PLAYGROUND_SUBSCRIPTION_ENDPOINT="ws://localhost:8000/graphql/subscriptions"
# 线上HTTPS环境对应修改为wss://你的域名/graphql/subscriptions

这个配置错误直接对应你遇到的浏览器端Invalid message type报错、Pusher后台Missing parameter: event报错。

3. 开启Laravel广播服务提供者

Laravel默认关闭广播功能,需要手动开启对应的服务提供者:

  • 打开config/app.php,找到providers数组,取消App\Providers\BroadcastServiceProvider::class的注释。

4. 补充Pusher配置兼容

如果是本地开发环境,可在config/broadcasting.php的pusher配置中增加SSL忽略配置,避免证书验证失败导致广播失败:

'pusher' => [
    'driver' => 'pusher',
    'key' => env('PUSHER_APP_KEY'),
    'secret' => env('PUSHER_APP_SECRET'),
    'app_id' => env('PUSHER_APP_ID'),
    'options' => [
        'cluster' => env('PUSHER_APP_CLUSTER'),
        'useTLS' => true,
        // 本地开发新增以下两项,生产环境可删除
        'curl_options' => [
            CURLOPT_SSL_VERIFYHOST => 0,
            CURLOPT_SSL_VERIFYPEER => 0,
        ],
    ],
],

可选验证项

如果以上步骤都执行完仍有问题,检查MessageSent订阅类的文件路径是否和命名空间对应,确认文件存放在app/GraphQL/Subscriptions/MessageSent.php位置。


内容的提问来源于stack exchange,提问作者Cata

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 20:36:04