打造你的Laravel即时应用(一)-项目初始化构建
打造你的Laravel即时应用(一)-项目初始化构建
关于即时应用
在现代Web应用开发中,即时交互场景越来越多,比如场景的就有:即时聊天,即时通知,第三方登录,扫码登录等功能,都需要接入即时场景来完善。
在过去,为了实现这种即时通讯,能让客户端正确响应处理结果,最为常用的技术就是轮询,因为 HTTP 协议的单向性,客户端只能一遍一遍的主动询问服务端的处理结果。这种方式有显见的缺陷,占用服务端资源不说,还不能实时获得服务端处理结果。
现在,我们可以使用 WebSocket 协议来处理实时交互,它是一种双向协议,允许服务端主动推送信息到客户端。
本篇我将使用Laravel来进行构建一个即时的通知应用,需要运用到以下知识:
- Laravel Broadcast Event(广播事件)
- Redis
- Vue
- Laravel-Echo
(一)、广播系统配置
实现Laravel即时应用需要配合Laravel广播事件系统来实现:https://laravel.com/docs/5.6/...
首先需要恢复注释的掉广播服务提供者,在文件==config/app.php==中
Illuminate\Broadcasting\BroadcastServiceProvider::class
然后在.env文件中配置广播系统的选项
BROADCAST_DRIVER=redis #这里为了演示方便,可以按实际情况配置 QUEUE_DRIVER=sync
然后需要按照redis包,上面的 广播系统需要应用到这个。
composer require predis/predis
Redis的配置在==config/database.php==中
'redis' => [ 'client' => 'predis', 'default' => [ 'host' => env('REDIS_HOST', '127.0.0.1'), 'password' => env('REDIS_PASSWORD', null), 'port' => env('REDIS_PORT', 6379), 'database' => 0, ], 'cache' => [ 'host' => 'redis_cache_server_01', 'password' => null, 'port' => 6379, 'database' => 1, ], ],
(二、)Laravel-echo-server安装
首先我们需要通过npm全局安装laravel-
echo-server
npm install -g laravel-echo-server
然后开始对laravrl-echo-server进行初始化
laravel-echo-server init
下面会需要输入一些配置,你可以参照我下面这张截图来进行设置.
PS:在实际生产环境中,切记关闭开发模式
下面我们将laravel-echo-server运行起来.
laravel-echo-server start
正常的输出将会是这个样子(如图),如有问题请详细检查你的配置.
做好以上准备后,就开始实战进行消息推送与监听.