阅读(895)
赞(11)
Laravel 8 定义广播事件
2021-06-30 16:36:16 更新
要通知 Laravel 应该广播给定事件,并在该事件上实现 Illuminate\Contracts\Broadcasting\ShouldBroadcast
接口。此接口已导入到框架生成的所有事件类中,因此你可以轻松地将其添加到任何事件中。
ShouldBroadcast
接口要求你实现一个方法: broadcastOn
。 broadcastOn
方法应该返回事件应该广播的频道或频道数组。 该频道应该是 Channel
, PrivateChannel
,或者 PresenceChannel
的实例。Channel
的实例 代表任何用户可以订阅的公共频道, PrivateChannels
和 PresenceChannels
实例代表需要频道授权的私有频道:
<?php
namespace App\Events;
use App\Models\User;
use Illuminate\Broadcasting\Channel;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Queue\SerializesModels;
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);
}
}
那么, 你仅仅需要像平常那样 触发事件 。事件一旦触发, 一个 队列任务 将通过你指定的广播驱动程序广播该事件。