laravel 廣播細節講解


1、應用場景

 

1、通知(Notification) 或 信號(Signal)
2、通知是最簡單的示例,也最經常用到。信號也可看作是通知的一種展現形式,只不過信號沒有UI而已。
3、Activity Streams(feeds)是社交網絡的核心。如微信朋友圈的點贊和評論,A可以實時看到B的點贊,B可以實時看到A的評論。
4、聊天信息的實時顯示

 

 

2、模塊組成

3、頻道類型

 

1、公共頻道:Channel
2、私有頻道:PrivateChannel
3、存在頻道:PresenceChannel

注意:
訂閱公共頻道不需要
權限驗證,會直接提示成功;私有頻道private和存在頻道presence在進行訂閱的過程中,會向服務器端發送權限驗證,看是不是有權限可以訂閱該頻道;
私有頻道private和存在頻道presence的區別在於,私有頻道private能夠接收其他成員發送的消息,而存在頻道presence除此之外,還能夠在用戶的加入與離開時接收信息;

設置頻道的方法(channel就是設置公共頻道)在APP/Events目錄下

 

 4、配置廣播

1、在.env中的BROADCAST_DRIVER設置廣播驅動(Pusher類型超過一定條數需要付費)
2、開啟廣播配置文件,在config/app.php中的providers數組中打開注釋App\Providers\BroadcastServiceProvider::class
3、設置廣播隊列的驅動,在.env的QUEUE_CONNECTION設置驅動,REDIS_QUEUE設置隊列名稱,具體細節在config/queue.php中

 

5、監聽事件廣播

 

實現ShouldBroadcast接口的事件被觸發時,則會進行廣播操作;(同時,還有一個接口叫ShouldBroadcastNow,與ShouldBroadcast接口的不同在於,將實現ShouldBroadcastNow接口的事件放入隊列中時,會被放入叫sync的隊列中)

 

6、觸發事件,發送廣播

 

1、直接事件觸發:event(new \App\Events\Comment($user, true));
2、幫助函數broadcast,間接觸發事件:broadcast(new \App\Events\Comment($user, true));
3、廣播管理類,間接觸發事件,直接廣播:
    $manager = app(Illuminate\Broadcasting\BroadcastManager::class);
    $manager->event(new \App\Events\Comment($user, true));
4、廣播管理類,間接觸發事件,放入隊列:
    $manager = app(Illuminate\Broadcasting\BroadcastManager::class);
    $manager->queue(new \App\Events\Comment($user, true));

注意:括號中的參數,對應構造中的參數,沒有為空

 

 

7、事件廣播類介紹

 

8、成功標志

 

后端:判斷后端配置是否成功
    1、執行廣播后(參考第六條),在redis中能看到廣播隊列,執行queue::work后能消費廣播,說明成功。

前端:前端目前有安裝js擴展來支持訂閱廣播頻道或者使用swoole來實現

 

 參考鏈接:https://learnku.com/articles/7137/laravel-broadcast-an-analysis-of-the-source-code-of-the-broadcasting-system

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM