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. 测试流程
完成上述修改后:
- 重启Laravel服务:
php artisan serve - 发送POST请求触发
/testMessage路由(可使用Postman或curl) - 查看前端控制台,确认是否接收到
new.message事件
内容的提问来源于stack exchange,提问作者Jayant Dahiya
相关产品推荐
相关产品推荐

