因为要重构一个studio的招新系统,碰到的问题就是面试官点击下一个面试者之后,需要把消息传达给等候室,本来考虑到直接搭个多人聊天就完事了,通知的消息由面试官自己发送到前台,但是看到之前师兄写的代码,用到了laravel的事件,就想着为何不直接广播一条通知消息给前台呢?效率肯定比面试官手动发送要快,而且发送的数据是直接从数据库拿到的,不易出错。
于是就查阅了一下laravel的官方文档跟网上的一些资料,搞一下事件广播。
PS:因为我用的是laravel5.1的版本开发的,看了下相关资料,laravel5.5之后很多地方都进行了改动,广播事件这一部分有了较大的改动,具体可以去看一下laravel5.5的官方文档。
注意:因为我这个是在本地搞的事件广播,本地开发环境为windows
进入正题:
准备工作:
-
laravel5.1
-
redis
-
node.js
-
socket.io , ioredis
-
laravel默认驱动为pusher,因为用到的是redis作为广播驱动,所以要把项目里面的广播驱动改为redis。
将laravel项目中的config/broadcasting.php文件下的
'default' => env('BROADCAST_DRIVER', 'pusher')
改为
'default' => env('BROADCAST_DRIVER', 'redis')
配置好laravel的database配置文件
位置:项目根目录中的config/database.php
'redis' => [ 'cluster' => false, 'default' => [ 'host' => env('REDIS_HOST', 'localhost'), 'password' => env('REDIS_PASSWORD', null), 'port' => env('REDIS_PORT', 6379), 'database' => 0, ], ]
进行相关的配置,端口,主机,密码这些。
laravel的配置部分搞好之后,就定义一个被广播的事件