7

打造你的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

下面会需要输入一些配置,你可以参照我下面这张截图来进行设置.

image

PS:在实际生产环境中,切记关闭开发模式

下面我们将laravel-echo-server运行起来.

laravel-echo-server start

正常的输出将会是这个样子(如图),如有问题请详细检查你的配置.
image

做好以上准备后,就开始实战进行消息推送与监听.


Sinming
310 声望21 粉丝

Bug总工程师