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网络

相关文章
相关标签/搜索