Laravel 8 定義廣播事件

2021-07-17 17:34 更新

要通知 Laravel 應(yīng)該廣播給定事件,并在該事件上實(shí)現(xiàn) Illuminate\Contracts\Broadcasting\ShouldBroadcast 接口。此接口已導(dǎo)入到框架生成的所有事件類中,因此你可以輕松地將其添加到任何事件中。

ShouldBroadcast 接口要求你實(shí)現(xiàn)一個(gè)方法: broadcastOn 。 broadcastOn 方法應(yīng)該返回事件應(yīng)該廣播的頻道或頻道數(shù)組。 該頻道應(yīng)該是 Channel, PrivateChannel ,或者 PresenceChannel 的實(shí)例。Channel 的實(shí)例 代表任何用戶可以訂閱的公共頻道, PrivateChannelsPresenceChannels 實(shí)例代表需要頻道授權(quán)的私有頻道:

<?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;

    /**
     * 新建一個(gè)新的事件實(shí)例。
     *
     * @return void
     */
    public function __construct(User $user)
    {
        $this->user = $user;
    }

    /**
     * 獲取事件應(yīng)廣播的頻道。
     *
     * @return Channel|array
     */
    public function broadcastOn()
    {
        return new PrivateChannel('user.'.$this->user->id);
    }
}

那么, 你僅僅需要像平常那樣 觸發(fā)事件 。事件一旦觸發(fā), 一個(gè) 隊(duì)列任務(wù) 將通過你指定的廣播驅(qū)動(dòng)程序廣播該事件。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)