热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

基于Redis驱动的Laravel事件广播

一、前言之前在项目中需要使用laravel的事件广播,而且项目打算使用redis作为驱动,但发现网上的资料大部分都是Pusher驱动的,只能自己摸索着搭建了一下服务。现在将这个过程

一、前言

之前在项目中需要使用laravel的事件广播,而且项目打算使用redis作为驱动,但发现网上的资料大部分都是Pusher驱动的,只能自己摸索着搭建了一下服务。现在将这个过程记录一下,希望能帮到其他人。

二、项目的环境

事件广播需要用到redis,nodejs,不同的版本在安装过程中会遇到一些问题,大家有兴趣可以看看我之前提过的一个问题:npm install 报错,下面是我开发时的环境:

  • laravel 5.3
  • node v6.11.4
  • redis 3.0.500

三、具体的搭建流程

其实大概的步骤在官方文档上已经给出来了,laravel5.3 官方文档 广播系统,这里我就不讲了,只把整体的流程写下来~

3.1 在config/app.config中取消AppProvidersBroadcastServiceProvider::class的注释

3.2 安装Predis扩展

composer require predis/predis;

3.3 安装laravel-echo-server

npm install -g laravel-echo-server
然后需要将此服务初始化,
laravel-echo-server init

然后按照指引一步一步初始化就好

3.4 将laravel-echo-server 服务加入到resource/asset/app.js


import Echo from "laravel-echo"
window.Echo = new Echo({
broadcaster: 'socket.io',
host: window.location.hostname + ':6001' //一定不能用127.0.0.1(因为这个地方用127.0.0.1的时候,其他人访问的时候会找自己的主机,而不是服务器的主机)
});
//这里放要监控的频道名,以及要进行的操作
window.Echo.channel('user1').listen('EventChanged', (e) => {
console.log(e.name);//比如我要输出传过来的人名
});

3.5 编译app.js文件

由于app.js此时尚未进行编译,所以需要编译。编译需要用到gulp,所以先安装node的包

- npm install (会在根目录下产生node_modules文件夹)
- npm install安装过程中可能会遇到问题:
安装过程中如果遇到 deprecate gulp@3.9.1 › vinyl-fs@0.3.14 › glob-stream@3.1.18 › minimatch@^2.0.1
执行 npm update -g minimatch@3.0.2npm update -g minimatch@3.0.2就可以
- 运行命令:gulp -watch或者npm run dev 将此js编译,此时会报错,can't resolve laravel-echo,解决方法:npm install laravel-echo

到此为止,基本上laravel-echo-server 的服务基本上已经搭好了,现在进行其他工作

3.6 创建要推送的事件,举例TestEvent

3.6.1 生成事件

php artisan make:event EventChanged

3.6.2 广播事件需要实现ShouldBrodcast接口

class EventChanged implements ShouldBroadcast

  • 在broadcaston中定义要广播到哪个频道

    public function broadcastOn()
    {
    return new Channel('user1');//比如广播到user1
    }

  • 当一个事件被定义后,其所有public属性都将被序列化,作为广播的信息发送到指定频道。
    //在broadcastWith中自定义要将哪些信息广播出去

    public function broadcastWith()
    {
    return ['name' => 'jack'];
    }

  • 在app/provider/BrodcastServiceProvider 的boot中设置广播的频道授权(return 为ture代表授权通过)

    Broadcast::channel('user1', function () {
    return true; //这个里面可以写授权的逻辑判断,我这里直接返回true了,不做验证
    });

3.7 前端页面js的引入

在你的前端页面中引入编译好的js文件,以及socket.io文件

//注意这两个文件的引入顺序


3.8 一些需要配置的配置项

3.8.1 整个环境还需要注意的一些配置项:
  • .env文件中的 broadcastdriver = redis // 因为使用redis驱动,所以要设置好
  • appconfigbroadcasting.php 中’default’ => env(‘BROADCAST_DRIVER’, ‘redis’)
  • .env文件中的 QUEUE_DRIVER,这个代表了队列的驱动方式,因为事件广播将事件扔到默认队列进行推送,所以这个地方有两种设置方式(详情参照laravel队列的相关文档):
    1.QUEUE_DRIVER = sync //这个代表本地驱动,如果采用这个设置的话没什么其他要操作的
    2.QUEUE_DRIVER = database //这个代表采用数据库驱动
3.8.2 如果采用database驱动队列的话首先要运行
  • php artisan queue:table生成jobs表迁移
  • php artisan migrate 执行迁移
  • 运行队列 php artisan queue:work
3.8.3 需要手动开启的服务(均在项目的根目录下执行)
  • redis-server.exe (开启redis服务,一定要启动)
  • laravel-echo-server start (开启socket服务)

四、总结

差不多上面就是所有的过程和步骤了,不知道有没有很清楚。如果有可以帮到大家的地方,那就达到我写这篇文章的目的了。

推荐阅读
  • 如何通过swoole加速laravel的问题?
    这篇文章主要介绍了关于如何使用swoole加速laravel,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下再来复习一下吧,导致php慢的各种因素中解析性语言的 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了未找到类'MaddHatterLaravelFullcalendarServiceProvider'相关的知识,希望对你 ... [详细]
  • 【前端工具】nodejs+npm+vue 安装(windows)
    预备先看看这几个是干嘛的,相互的关系是啥。nodejs是语言,类比到php。npm是个包管理,类比到composer。vue是个框架&# ... [详细]
  • laravel 使用腾讯云 COS5全教程
    laravel使用腾讯云COS5全教程一下载首先第一步肯定是用composer把包安装下来,这里是laravel5.8版本的,所以我用的是cos5 ... [详细]
  • phpcomposer 那个中文镜像是不是凉了 ... [详细]
  • php composer 安装,phpstudy  composer 使用安装
    本人是windows系统phpstudy是最新2018版本以安装laravel框架为例子一如图一,点击phpComposer出现系统指令框,根据指令框路 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了Composer依赖管理的重要性及使用方法。对于现代语言而言,包管理器是标配,而Composer作为PHP的包管理器,解决了PEAR的问题,并且使用简单,方便提交自己的包。文章还提到了使用Composer能够避免各种include的问题,避免命名空间冲突,并且能够方便地安装升级扩展包。 ... [详细]
  • 本文介绍了一个适用于PHP应用快速接入TRX和TRC20数字资产的开发包,该开发包支持使用自有Tron区块链节点的应用场景,也支持基于Tron官方公共API服务的轻量级部署场景。提供的功能包括生成地址、验证地址、查询余额、交易转账、查询最新区块和查询交易信息等。详细信息可参考tron-php的Github地址:https://github.com/Fenguoz/tron-php。 ... [详细]
  • 在IDEA中运行CAS服务器的配置方法
    本文介绍了在IDEA中运行CAS服务器的配置方法,包括下载CAS模板Overlay Template、解压并添加项目、配置tomcat、运行CAS服务器等步骤。通过本文的指导,读者可以轻松在IDEA中进行CAS服务器的运行和配置。 ... [详细]
  • 微信民众号商城/小顺序商城开源项目介绍及使用教程
    本文介绍了一个基于WeiPHP5.0开发的微信民众号商城/小顺序商城的开源项目,包括前端和后端的目录结构,以及所使用的技术栈。同时提供了项目的运行和打包方法,并分享了一些调试和开发经验。最后还附上了在线预览和GitHub商城源码的链接,以及加入前端交流QQ群的方式。 ... [详细]
  • 根据自己的PHP版本号选出对应的laravel版本Laravel5.1PHP对应的版本5.5.9Laravel5.2PHP对应的版本5.5.9Laravel5.3PHP对应 ... [详细]
  • 拖拽验证:简单、便捷、安全
    最近看到一些拖拽验证码的帖子,本着好奇和研究学习的态度简单实现了第一版的拖拽验证项目地址:github.comRLOFLSdrag-captcha示例逻辑:apiphpDragge ... [详细]
  • laravel怎么关闭csrf验证
    php框架|Laravellaravelphp框架-Laravel在线生成php源码,vscode怎么解除注释,ubuntu进入后,tomcat放在哪了,爬虫美图,php打包工具, ... [详细]
  • 温馨提示:本信息由【金聪采编】搜集整理发布,版权归原作者及发布者所有,您如有异议请举报或者版权申诉。前言本文主要给大家介绍的是关于Lara ... [详细]
author-avatar
cb
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有