序
本文主要介绍关于Laravel广播模块的相关内容,分享给大家参考学习。下面的话就不多说了,我们来看看详细的介绍:
注:本文基于Laravel版的路由模块代码;
简介
广播是指发送方发送消息,每个订阅频道的接收方都能及时收到消息;例如,一个学生写了一篇文章。这时,B同学在文章底部评论道。一名学生在页面上收到提示,但没有刷新。文章被评论了。这本质上是一个学生收到了广播信息。此广播消息由评论此操作的B学生触发;
在整个广播行为中,有一个重要的概念叫做频道,频道的类型如下
公共频道公共私人频道存在移动终端订阅公共频道公共,会直接提示成功;在订阅过程中,私信道和在场信道会向服务器发送权限验证,看它们是否有权限订阅该信道;私信道和在场信道的区别在于,私信道可以接收其他成员发送的消息,而在场信道也可以在用户加入和离开时接收信息;
广播适用于以下场景:
通知或信号通知是最简单的例子,也是最常用的。信号也可以看作是一种通知形式,只是信号没有UI。活动流活动流(feeds)是社交网络的核心。比如微信朋友圈的喜欢和评论,A可以看到B的喜欢,B可以实时看到A的评论。聊天信息实时显示模块
演示
日志驱动器
部署
修改或添加一行到。env文件:broadcast _ driver=log
广播
直拨电话
$manager=app(照明广播广播管理器: class);$ driver=$ manager-connection();//第一个参数是频道名,第二个参数是事件名,第三个参数是broadcast content $ driver-broadcast([' channel _ 1 ',' channel _ 2'],' login ',['message'=' hello world'])。由于是日志驱动的,广播内容将被写入框架配置的日志文件,输出消息如下
[2017-08-18]20:45:49]local . info :在有效负载为: { ' message ' 3360 ' hello world ' }的频道[channel _ 1,channel _ 2]上广播[登录]监控事件广播
在此调用模式下,当触发实现ShouldBroadcast接口的事件时,将执行广播操作;(同时还有一个接口叫做shouldbroadcastnow,它与ShouldBroadcastNow接口的不同之处在于,当实现ShouldBroadcastNow接口的事件放入队列时,它会放入名为sync的队列中。)
例如,
第一步,照亮授权事件登录事件是用户成功登录后会触发的事件,稍加改动即可实现广播功能;
类登录实现应该广播{.//定义事件触发时的广播通道;()上的公共广播功能{ return[新专用频道('第一频道'),];}//自定义广播名称;如果方法未定义,类名默认为事件名,这里的默认值为illuminate auth events log in public function broadcast as(){ return ' log in ';}}第二步,注册事件监控;在app/providers/event serviceprovider . PHP中修改:
受保护的$listen=[.照亮授权事件登录'=['应用监听器用户登录',],];文件app/Listeners/UserLogin.php大致实现了这一点:
类user log in { public function _ _ construct(){ }公共函数句柄(log in $ event){ log :3360 info(' Do user log in listener : I is log in ');}}第三步是触发事件并发送广播;有几种方法可以触发广播:
直接事件触发
事件(新的照亮授权事件登录($用户,真));帮助功能广播,间接触发事件
广播(新的照亮授权事件登录($用户,真));广播管理类,间接触发事件,直接广播
$manager=app(照明广播广播管理器: class);$ manager-事件(新的照亮授权事件登录($user,true));广播管理类,间接触发事件,放入队列
$manager=app(照明广播广播管理器: class);$ manager-队列(新的照明授权事件登录($user,true));推动器驱动
Pusher是第三方服务。服务器发送广播时,会向Pusher发送请求,然后通过Pusher与浏览器或移动终端维护的长连接进行数据交互;
部署
获取您自己的一组关键信息并修改的配置文件。env通过在官方网站注册Pusher信息。
BROADCAST _ DRIVER=pusherPUSHER _ APP _ ID=