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

Laravel+React+Soketi无法监听公共事件问题求助

问题排查与解决方案

1. 修复.env文件的主机地址拼写错误

你的.env中PUSHER_HOST写成了1270.0.1,这是无效的本地地址,直接导致后端无法连接Soketi服务,修改为:

PUSHER_HOST=127.0.0.1

2. 调整Laravel广播配置(config/broadcasting.php)

针对本地Soketi部署,修正Pusher驱动的options配置,确保与.env参数完全匹配:

'pusher' => [
    'driver' => 'pusher',
    'key' => env('PUSHER_APP_KEY'),
    'secret' => env('PUSHER_APP_SECRET'),
    'app_id' => env('PUSHER_APP_ID'),
    'options' => [
        'host' => env('PUSHER_HOST'),
        'port' => env('PUSHER_PORT'),
        'scheme' => env('PUSHER_SCHEME'),
        'encrypted' => env('PUSHER_SCHEME') === 'https',
        'useTLS' => env('PUSHER_SCHEME') === 'https',
    ],
    'client_options' => [],
],

3. 确保广播任务能够执行

Laravel默认将广播任务放入队列处理,如果没有启动队列进程,事件不会被推送到Soketi:

  • 测试阶段可临时改为同步广播,在.env中设置:
    QUEUE_CONNECTION=sync
    
  • 生产环境请启动队列进程:
    php artisan queue:work
    

4. 修正前端Laravel Echo配置

你的Echo配置中encrypted: true与本地http协议冲突,改为false保持前后端一致:

var echo = new Echo({
  broadcaster: "pusher",
  cluster: "mt1",
  key: "app-key",
  wsHost: "127.0.0.1",
  wsPort: 6001,
  wssPort: 6001,
  forceTLS: false,
  encrypted: false, // 修改此处为false
  disableStats: true,
  enabledTransports: ["ws", "wss"],
});

5. 验证Soketi服务状态

访问http://localhost:9601,确认Soketi仪表盘能正常打开,说明服务运行正常。

6. 测试流程

完成上述修改后:

  1. 重启Laravel服务:php artisan serve
  2. 发送POST请求触发/testMessage路由(可使用Postman或curl)
  3. 查看前端控制台,确认是否接收到new.message事件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 11:49:50