Laravel中配置多Pusher凭证实现多频道事件广播问题
解决Laravel多Pusher连接广播事件失效的问题
1. 正确配置多Pusher连接
打开config/broadcasting.php,在connections数组里新增一个专门给报价事件用的Pusher连接,参数要和默认连接完全分开:
'connections' => [ // 原有默认Pusher连接(订单事件用) '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, ], ], // 新增报价专用Pusher连接 'pusher_offer' => [ 'driver' => 'pusher', 'key' => env('PUSHER_OFFER_APP_KEY'), 'secret' => env('PUSHER_OFFER_APP_SECRET'), 'app_id' => env('PUSHER_OFFER_APP_ID'), 'options' => [ 'cluster' => env('PUSHER_OFFER_APP_CLUSTER'), 'useTLS' => true, ], ], ],
接着在.env文件补上对应新连接的凭证:
PUSHER_OFFER_APP_KEY=你的报价Pusher应用Key PUSHER_OFFER_APP_SECRET=你的报价Pusher应用Secret PUSHER_OFFER_APP_ID=你的报价Pusher应用ID PUSHER_OFFER_APP_CLUSTER=你的报价Pusher集群
2. 让报价事件指定使用新连接
找到NewOfferEvent类,添加broadcastConnection()方法,明确指定该事件使用新增的pusher_offer连接:
class NewOfferEvent implements ShouldBroadcast { public $offer; public $orderId; public function __construct($offer, $orderId) { $this->offer = $offer; $this->orderId = $orderId; } // 关键:指定事件对应的广播连接 public function broadcastConnection() { return 'pusher_offer'; } public function broadcastOn() { return new Channel('offer-' . $this->orderId); } public function broadcastWith() { return [ 'offer' => $this->offer, ]; } }
3. 清除配置缓存(必做步骤)
如果之前执行过config:cache命令,新配置不会自动生效,必须清除缓存:
php artisan config:clear
4. 验证配置是否加载成功
可以在触发NewOfferEvent的位置临时添加一行代码,打印新连接的配置信息,确认是否为你填写的凭证:
// 比如在控制器触发事件前 dd(config('broadcasting.connections.pusher_offer'));
如果输出的是正确配置参数,说明配置没问题,再测试事件发送即可。
内容的提问来源于stack exchange,提问作者Mahmoud Nehro
相关产品推荐
相关产品推荐

