laravel Redis 广播

这篇博客详细介绍了如何在laravel项目中配置和使用Redis进行广播,包括配置广播驱动、安装Redis、创建事件、设置频道(公共和私有)、控制器与路由的交互,以及前端使用Laravel Echo接收广播消息的步骤。
摘要由CSDN通过智能技术生成

laravel Redis 广播

github 地址

https://github.com/bool-true/laravel-echo-redis

先简单剖析一下:

laravel 的广播系统和队列系统类似,需要两个进程协作,一个是 laravel 的 web 后台系统,另一个是 Socket.IO 服务器系统。具体的流程是页面加载时,网页 js 程序 Laravel Echo 与 Socket.IO 服务器建立连接, laravel 发起通过驱动发布广播,Socket.IO 服务器接受广播内容,对连接的客户端网页推送信息,以达到网页实时更新的目的。

上代码

一、 配置

  • 驱动配置
    具体配置文件 config/broadcasting.php,这里我们主要是用redis作为广播驱动(类似于队列驱动),我直接在env中配置 BROADCAST_DRIVER=redis

  • Redis 安装
    此处用的redis驱动 所以未安装的 cmd执行composer require predis/predis,安装过的略过

  • 广播服务提供者
    就是将config/app.php 配置文件中 providers数组中App\Providers\BroadcastServiceProvider::class,注释打开

  • Laravel-echo 安装
    Laravel Echo是一个JavaScript库,web端可以轻松订阅频道并收听Laravel广播的事件,
    需要node 的npm包管理器安装 没有的自行度娘安装node
    首先cmd 执行 npm install 安装package.json里的依赖 (必须),抽根烟等会儿
    接着执行 npm install laravel-echo-server 安装 laravel-echo服务端
    最后执行 npm install laravel-echo 安装 laravel-echo前端资源(可省略一般第二部都已经安装了,但是安装更新一下最好)

    初始化 laravel-echo-server

      laravel-echo-server init
    // 是否在开发模式下运行此服务器(y/n) 输入y
    ? Do you want to run this server in development mode? (y/N) 
    // 设置服务器的端口 默认 6001 输入 6001就可以了 或者你想要的
    ? Which port would you like to serve from? (6001)
    // 想用的数据库  选择 redis
    ? Which database would you like to use to store presence channel members? (Use arrow keys)
    ❯ redis 
      sqlite 
    //   这里输入 你的laravel  项目的访问域名
    ? Enter the host of your Laravel authentication server. (http://localhost) 
    // 选择 网络协议 http
    ? Will you be serving on http or https? (Use arrow keys)
    ❯ http 
      https 
    // 您想为HTTP API生成客户端ID/密钥吗 N
    ? Do you want to generate a client ID/Key for HTTP API? (y/N) 
    // 要设置对API的跨域访问吗?(y/n)N
    Configuration file saved. Run laravel-echo-server start to run server.
    

    这一系列配置完成后 项目根目录下 会生成 laravel-echo-server.json 文件 这里面就是刚才的配置
    在这里插入图片描述

    执行laravel-echo-server start启动服务 出现如下 则启动成功

      C:\wamp64\www\laravel7>laravel-echo-server start
      L A R A V E L  E C H O  S E R V E R
      version 1.4.2
      ⚠ Starting server in DEV mode...
      ✔  Running at localhost on port 6001
      ✔  Channels are ready.
      ✔  Listening for http events...
      ✔  Listening for redis events...
      Server ready!
    

二、创建频道

  • 频道的种类:

Channel 表示任何用户都可以订阅的公开频道
PrivateChannel 表示需要 频道授权 的私有频道

1.先说公共频道(channel)

  • 创建事件
    cmd运行 php artisan make:event PublicMessageEvent
<?php

namespace App\Events;
...
class PublicMessageEvent extends Event implements ShouldBroadcast
{
   	
    use Dispatchable, InteractsWithSockets, SerializesModels;

    //消息内容
    public $message;

    public function __construct(string $message)
    {
   
        $this->message = $message;
    }

    //返回一个公共频道  频道名称为push
    public function broadcastOn()
    {
      
        return new Channel('push');
    }

    //laravel 默认会使用事件的类名(PublicMessageEvent )作为广播名称来广播事件,
    //这里可以使用 broadcastAs 方法自定义广播名称
    public
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小阿巳

你的鼓励就是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值