使用beyondcode/laravel-websockets触发事件时遇cURL error 28超时问题
解决beyondcode/laravel-websockets触发事件时的cURL超时问题
你的配置里存在几个关键问题,这大概率是导致超时错误的根源,以下是具体排查和修复步骤:
1. 修正配置文件笔误
在config/broadcasting.php的pusher配置中,options数组里的'post'是拼写错误,必须改为'port'——错误的键名会导致端口配置不生效,请求无法正确发送到websocket服务:
'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' => false, 'encrypter' => false, 'host' => env('PUSHER_HOST'), 'port' => env('PUSHER_PORT'), // 此处将post改为port 'scheme' => env('PUSHER_SCHEME'), ], 'client_options' => [ // Guzzle client options ], ],
2. 移除.env配置值的多余引号
你的.env文件中,PUSHER_HOST、PUSHER_PORT、PUSHER_SCHEME带了双引号,Laravel读取这些值时会把引号也包含进去,导致请求地址格式错误,修改为:
BROADCAST_DRIVER=pusher PUSHER_APP_ID=livequeueing PUSHER_APP_KEY=livequeueing_key PUSHER_APP_SECRET=livequeueing_secret PUSHER_APP_CLUSTER=mt1 PUSHER_HOST=127.0.0.1 PUSHER_PORT=6001 PUSHER_SCHEME=http
3. 验证WebSocket服务监听状态
执行命令检查6001端口是否被websocket服务占用:
netstat -tulpn | grep 6001 # 或者使用lsof命令 lsof -i :6001
如果没有返回结果,说明websocket服务未正常启动,重新运行php artisan websockets:serve确保服务在运行。
4. 调整Guzzle客户端超时设置
在config/broadcasting.php的client_options中添加超时参数,避免请求因等待时间过长触发超时:
'client_options' => [ 'timeout' => 10, 'connect_timeout' => 5, ],
5. 确认广播服务提供者已注册
检查config/app.php的providers数组中是否包含广播服务提供者:
Illuminate\Broadcasting\BroadcastServiceProvider::class,
完成以上修改后,清除配置缓存并重启websocket服务:
php artisan config:clear php artisan websockets:serve
之后再触发事件测试即可。
内容的提问来源于stack exchange,提问作者Demonyowh
相关产品推荐
相关产品推荐

