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

Laravel學(xué)習(xí)教程之廣播模塊詳解

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

前言

本文主要給大家介紹了關(guān)于Laravel廣播模塊的相關(guān)內(nèi)容,分享出來供大家參考學(xué)習(xí),下面話不多說了,來一起看看詳細(xì)的介紹:

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

簡(jiǎn)介

廣播是指發(fā)送方發(fā)送一條消息,訂閱頻道的各個(gè)接收方都能及時(shí)收到消息;比如 A同學(xué)寫了一篇文章,這時(shí)候 B同學(xué)在文章底下評(píng)論了,A同學(xué)在頁面上是不用刷新就能收到提示有文章被評(píng)論了,這個(gè)本質(zhì)上就是A同學(xué)收到了廣播消息,這個(gè)廣播消息是由B同學(xué)評(píng)論這個(gè)動(dòng)作觸發(fā)了發(fā)送廣播消息;

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

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

移動(dòng)端訂閱了公共頻道public,會(huì)直接提示成功;私有頻道private和存在頻道presence在進(jìn)行訂閱的過程中,會(huì)向服務(wù)器端發(fā)送權(quán)限驗(yàn)證,看是不是有權(quán)限可以訂閱該頻道;私有頻道private和存在頻道presence的區(qū)別在于,私有頻道private能夠接收其他成員發(fā)送的消息,而存在頻道presence除此之外,還能夠在用戶的加入與離開時(shí)接收信息;

廣播適合以下場(chǎng)景:

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

模塊組成

Laravel學(xué)習(xí)教程之廣播模塊詳解

Demo

日志驅(qū)動(dòng)

配置

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

廣播

直接調(diào)用

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

因?yàn)槭侨罩掘?qū)動(dòng),所以廣播內(nèi)容會(huì)寫到框架配置的日志文件中,輸出消息如下所示

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

監(jiān)聽事件廣播

這種調(diào)用方式,是當(dāng)實(shí)現(xiàn)ShouldBroadcast接口的事件被觸發(fā)時(shí),則會(huì)進(jìn)行廣播操作;(同時(shí),還有一個(gè)接口叫ShouldBroadcastNow,與ShouldBroadcast接口的不同在于,將實(shí)現(xiàn)ShouldBroadcastNow接口的事件放入隊(duì)列中時(shí),會(huì)被放入叫sync的隊(duì)列中)

舉個(gè)例子,

第一步,Illuminate\Auth\Events\Login事件是用戶登錄成功后會(huì)觸發(fā)的事件,略作改動(dòng),讓其實(shí)現(xiàn)廣播功能;

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

第二步,注冊(cè)事件監(jiān)聽;在app/Providers/EventServiceProvider.php中修改:

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

文件app/Listeners/UserLogin.php粗糙地實(shí)現(xiàn)了一下:

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

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

直接事件觸發(fā)

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

幫助函數(shù)broadcast,間接觸發(fā)事件

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

廣播管理類,間接觸發(fā)事件,直接廣播

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

相關(guān)文檔推薦

下面小編就為大家分享一篇laravel ORM 只開啟created_at的幾種方法總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
這篇文章主要給大家介紹了如何通過源碼解析Laravel的依賴注入的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著
這篇文章主要給大家介紹了關(guān)于Laravel中unique和exists驗(yàn)證規(guī)則的優(yōu)化的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面
最近在使用laravel5.5,利用其實(shí)現(xiàn)了一個(gè)功能,下面分享給大家,這篇文章主要給大家介紹了關(guān)于Laravel 5.5基于內(nèi)置的Auth模塊如何實(shí)現(xiàn)前后臺(tái)登陸的相關(guān)資料,文中通過示例代碼介紹的非
laravel 的隊(duì)列服務(wù)對(duì)各種不同的后臺(tái)隊(duì)列服務(wù)提供了統(tǒng)一的 API,下面這篇文章通過源碼分析給大家介紹了關(guān)于 Laravel 重復(fù)執(zhí)行同一個(gè)隊(duì)列任務(wù)的原因,文中通過示例代碼介紹的非常詳細(xì)
這篇文章主要給大家介紹了關(guān)于 Laravel Redis 多個(gè)進(jìn)程同時(shí)取隊(duì)列問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友下面來
主站蜘蛛池模板: 欧美精品久久久久久久久久 | 亚洲视频中文字幕 | 久久久蜜桃 | 精品美女在线观看 | 日韩免费激情视频 | 久久6| 日本在线网址 | 国产精品视频播放 | 乱码av午夜噜噜噜噜动漫 | 日韩免费一二三区 | 亚洲精品永久免费 | 中文字幕视频在线观看免费 | 91在线视频播放 | 久久午夜国产精品www忘忧草 | 精品欧美一区二区在线观看欧美熟 | 久久久久久国产精品免费免费男同 | 99久久99| 日韩欧美高清dvd碟片 | 成人小视频在线观看 | 日日摸夜夜添夜夜添精品视频 | www.日韩av.com | 国产精品久久久亚洲 | 亚洲色图综合网 | 99精品一级欧美片免费播放 | 久久久女女女女999久久 | 亚洲精品视频在线播放 | 久久av一区二区三区 | 毛片免费在线 | 黄色一级视频免费 | 日韩精品 电影一区 亚洲 | 欧美a在线 | 国产午夜精品一区二区 | av福利网 | 欧美成人一区二区 | 国产日韩一区二区三免费 | 国产日韩视频 | 在线日韩在线 | 亚洲欧美国产精品久久 | 久久久亚洲精品视频 | 免费高潮视频95在线观看网站 | 成人国产在线视频 |