久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

Laravel學習教程之廣播模塊詳解

這篇文章主要給大家介紹了關于Laravel學習教程之廣播模塊的相關資料,廣播是指發送方發送一條消息,訂閱頻道的各個接收方都能及時收到消息,文中通過示例代碼介紹的非常詳細,需

前言

本文主要給大家介紹了關于Laravel廣播模塊的相關內容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹:

注意:本文是基于Laravel 5.4版本的路由模塊代碼進行分析書寫;

簡介

廣播是指發送方發送一條消息,訂閱頻道的各個接收方都能及時收到消息;比如 A同學寫了一篇文章,這時候 B同學在文章底下評論了,A同學在頁面上是不用刷新就能收到提示有文章被評論了,這個本質上就是A同學收到了廣播消息,這個廣播消息是由B同學評論這個動作觸發了發送廣播消息;

在整個廣播行為中,有一個重要的概念叫頻道channel,頻道的類型有

  • 公共頻道public
  • 私有頻道private
  • 存在頻道presence

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

廣播適合以下場景:

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

模塊組成

Laravel學習教程之廣播模塊詳解

Demo

日志驅動

配置

.env文件修改或添加一行:BROADCAST_DRIVER=log

廣播

直接調用

 $manager = app(Illuminate\Broadcasting\BroadcastManager::class);
 $driver = $manager->connection();
 // 第一個參數是頻道名,第二個參數是事件名,第三個參數是廣播內容
 $driver->broadcast(['channel_1', 'channel_2'], 'login', ['message' => 'hello world']);

因為是日志驅動,所以廣播內容會寫到框架配置的日志文件中,輸出消息如下所示

[2017-08-18 20:45:49] local.INFO: Broadcasting [login] on channels [channel_1, channel_2] with payload:
{
 "message": "hello world"
} 

監聽事件廣播

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

舉個例子,

第一步,Illuminate\Auth\Events\Login事件是用戶登錄成功后會觸發的事件,略作改動,讓其實現廣播功能;

class Login implements ShouldBroadcast {
 ......
 
 // 定義事件被觸發時,廣播頻道;此處定義名為 first-channel 的私有頻道
 public function broadcastOn() {
  return [
   new PrivateChannel('first-channel'),
  ];
 }
 
 // 自定義廣播名稱;如果方法未定義,默認以類名為事件名,此處的默認值是 Illuminate\Auth\Events\Login
 public function broadcastAs() {
  return 'login';
 }
}

第二步,注冊事件監聽;在app/Providers/EventServiceProvider.php中修改:

protected $listen = [
 ......
 'Illuminate\Auth\Events\Login' => [
  'App\Listeners\UserLogin',
 ],
];

文件app/Listeners/UserLogin.php粗糙地實現了一下:

class UserLogin {
 public function __construct() {}
 
 public function handle(Login $event){
  \Log::info('Do UserLogin Listener: I was Login');
 }
}

第三步,觸發事件,發送廣播;有好幾種觸發廣播方式:

直接事件觸發

event(new Illuminate\Auth\Events\Login($user, true));

幫助函數broadcast,間接觸發事件

broadcast(new Illuminate\Auth\Events\Login($user, true));

廣播管理類,間接觸發事件,直接廣播

$manager = app(Illuminate\Broadcasting\BroadcastManager::class);
$manager->event(new Illuminate\Auth\Events\Login($user, true));
【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。

相關文檔推薦

下面小編就為大家分享一篇laravel ORM 只開啟created_at的幾種方法總結,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
這篇文章主要給大家介紹了如何通過源碼解析Laravel的依賴注入的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著
這篇文章主要給大家介紹了關于Laravel中unique和exists驗證規則的優化的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面
最近在使用laravel5.5,利用其實現了一個功能,下面分享給大家,這篇文章主要給大家介紹了關于Laravel 5.5基于內置的Auth模塊如何實現前后臺登陸的相關資料,文中通過示例代碼介紹的非
laravel 的隊列服務對各種不同的后臺隊列服務提供了統一的 API,下面這篇文章通過源碼分析給大家介紹了關于 Laravel 重復執行同一個隊列任務的原因,文中通過示例代碼介紹的非常詳細
這篇文章主要給大家介紹了關于 Laravel Redis 多個進程同時取隊列問題的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或工作具有一定的參考學習價值,需要的朋友下面來
主站蜘蛛池模板: 综合网伊人 | 久久中文字幕电影 | 日日操视频 | 国产精品久久久久婷婷二区次 | 久久久久久高潮国产精品视 | 欧美日韩中文在线 | 中文字幕免费在线 | 日本爱爱视频 | 国产视频久久 | 精品欧美一区二区三区免费观看 | 免费成人在线网站 | 国产视频一区二区 | 啪啪免费| 日韩一区二区在线视频 | 国产一区二区久久久 | 天堂精品 | 一区二区免费在线 | 日韩在线欧美 | 久久久久久国产精品 | 欧美老少妇一级特黄一片 | 久久精品a| 国产精品久久久久9999鸭 | 玖玖玖在线观看 | 国产激情视频在线 | 免费在线观看成人av | 欧美视频在线看 | 小视频你懂得 | 欧美一区二区在线 | 久国产精品 | 国产一区二区三区久久久久久久久 | 国产日批| 91高清在线观看 | 欧美一级片在线看 | 免费一区| 日韩精品一区二区三区在线播放 | 中文字幕一区在线观看视频 | 日日夜夜天天 | av中文在线播放 | av第一页 | 国产乱码久久久久久 | 免费av毛片|