阅读(891)
赞(14)
Laravel 8 定义广播事件
2021-06-30 16:36:16 更新
要通知 Laravel 应该广播给定事件,并在该事件上实现 IlluminateContractsBroadcastingShouldBroadcast
接口。此接口已导入到框架生成的所有事件类中,因此你可以轻松地将其添加到任何事件中。
ShouldBroadcast
接口要求你实现一个方法: broadcastOn
。 broadcastOn
方法应该返回事件应该广播的频道或频道数组。 该频道应该是 Channel
, PrivateChannel
,或者 PresenceChannel
的实例。Channel
的实例 代表任何用户可以订阅的公共频道, PrivateChannels
和 PresenceChannels
实例代表需要频道授权的私有频道:
<?php
namespace AppEvents;
use AppModelsUser;
use IlluminateBroadcastingChannel;
use IlluminateBroadcastingInteractsWithSockets;
use IlluminateBroadcastingPresenceChannel;
use IlluminateBroadcastingPrivateChannel;
use IlluminateContractsBroadcastingShouldBroadcast;
use IlluminateQueueSerializesModels;
class ServerCreated implements ShouldBroadcast
{
use SerializesModels;
public $user;
/**
* 新建一个新的事件实例。
*
* @return void
*/
public function __construct(User $user)
{
$this->user = $user;
}
/**
* 获取事件应广播的频道。
*
* @return Channel|array
*/
public function broadcastOn()
{
return new PrivateChannel('user.'.$this->user->id);
}
}
那么, 你仅仅需要像平常那样 触发事件 。事件一旦触发, 一个 队列任务 将通过你指定的广播驱动程序广播该事件。