laravel 廣播細節講解

一、應用場景php

 

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

 

 

二、模塊組成前端

三、頻道類型laravel

 

一、公共頻道:Channel
二、私有頻道:PrivateChannel
三、存在頻道:PresenceChannel

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

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

 

 四、配置廣播後端

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

 

五、監聽事件廣播數組

 

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

 

六、觸發事件,發送廣播服務器

 

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

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

 

 

七、事件廣播類介紹微信

 

八、成功標誌swoole

 

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

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

 

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

相關文章
相關標籤/搜索