我的编程空间,编程开发者的网络收藏夹
学习永远不晚

laravel7.0广播机制的示例分析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

laravel7.0广播机制的示例分析

小编给大家分享一下laravel7.0广播机制的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

laravel7.0广播机制(Redis + socket.io)

广播服务提供者

在广播任意事件之前,首先需要注册App\Providers\BroadcastServiceProvider。在新安装的 Laravel 应用中,你只需要取消 config/app.php 配置文件中 providers 数组内对应服务提供者之前的注释即可。该提供者允许你注册广播授权路由和回调

相关栏目教程

设置 Redis 连接

需要修改 .env 文件中的广播驱动为 redis

BROADCAST_DRIVER=redis

建立 Event

php artisan make:event OrderShipped

执行上诉命令之后 app 目录下会出现一个 Events 目录,在该目录下产生了广播事件类 OrderShipped.php。我们要对自动生成的 OrderShipped 类进行以下修改

  • 增加对 ShouldBroadcast 的实现

  • 修改 broadcastOn 方法,使用公共广播通道 orderStatus

  • 自定义广播的消息名(非必须)【默认情况下,Laravel 会使用事件的类名来广播事件,不过,你可以通过在事件中定义 broadcastAs 方法来自定义广播名称:】

  • 修改构造函数

完整修改如下 可直接替换

<?phpnamespace App\Events;use Illuminate\Broadcasting\Channel;use Illuminate\Broadcasting\InteractsWithSockets;use Illuminate\Broadcasting\PresenceChannel;use Illuminate\Broadcasting\PrivateChannel;use Illuminate\Contracts\Broadcasting\ShouldBroadcast;use Illuminate\Foundation\Events\Dispatchable;use Illuminate\Queue\SerializesModels;class OrderShipped implements ShouldBroadcast{    use Dispatchable, InteractsWithSockets, SerializesModels;    //可添加任意成员变量    public $id;    //事件构造函数    public function __construct($id)    {        $this->id = $id;    }    //自定义广播的消息名    public function broadcastAs()    {        return 'anyName';    }        public function broadcastOn()    {        return new Channel('orderStatus');    }}

设置 api 路由

Route::get('/ship', function (Request $request) {    $id = $request->input('id');    broadcast(new OrderShipped($id)); // 触发事件    return 'Order Shipped!';});

安装前端脚手架

composer require laravel/uiphp artisan ui vue --auth

Redis

因为咱们使用 Redis 广播,需要安装 Predis 库:

composer require predis/predis

Redis 广播使用 Redis 的 pub/sub 功能进行广播;不过,你需要将其和能够接受 Redis 消息的 Websocket 服务器进行配对以便将消息广播到 Websocket 频道

当 Redis 广播发布事件时,事件将会被发布到指定的频道上,传递的数据是一个 JSON 格式的字符串,其中包含了事件名称、负载数据 data、以及生成事件 socket ID 的用户

安装 laravel-echo-server 订阅 Redis Sub

如果使用 pusher 那么直接使只用 laravel 就可以了,如果使用 Redis + socket.io 则需要使用开源项目 laravel-echo-server 。所以我们现在要使用 laravel-echo-server

全局安装

npm install -g laravel-echo-server

初始化 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)NConfiguration file saved. Run laravel-echo-server start to run server.//您希望将此配置另存为什么? (laravel-echo-server.json)回车就行? What do you want this config to be saved as? (laravel-echo-server.json)

启动 laravel-echo-server

laravel-echo-server start
  • 成功启动后会输出以下日志

L A R A V E L  E C H O  S E R V E Rversion 1.6.0⚠ Starting server in DEV mode...✔  Running at localhost on port 6001✔  Channels are ready.✔  Listening for http events...✔  Listening for redis events...Server ready!

测试广播

在浏览器上执行 http://yourhost/api/ship?id=16

Channel: laravel_database_orderStatusEvent: anyName
  • laravel-echo-server 连接成功!

安装 laravel-echo 的前依赖

由于前端使用的是 laravel-echo来收听广播,我们选择的底层实现方式是socket.io。所以首先我们要在package.json中添加 laravel-echosocket.io的依赖

npm i --save socket.io-clientnpm i --save laravel-echo

编辑 resource/js/bootstrap.js 添加如下代码

import Echo from "laravel-echo";window.io = require("socket.io-client");window.Echo = new Echo({    broadcaster: "socket.io",    host: window.location.hostname + ":6001"});

测试页面

resources/views/ 下建立页面 test.blade.php 内容为

<!doctype html><html><head>    <meta charset="utf-8">    <meta http-equiv="X-UA-Compatible" content="IE=edge">    <meta name="viewport" content="width=device-width, initial-scale=1">    <meta name="csrf-token" content="">    <title>News Room</title>    <link href="" rel="stylesheet"></head><body>    <div class="content">        News Room    </div>    <script class="lazy" data-src=""></script>    <script>        Echo.channel("laravel_database_orderStatus") // 广播频道名称    .listen(".anyName", e => {        // 消息名称        console.log(e); // 收到消息进行的操作,参数 e 为所携带的数据    });    </script></body></html>

js 代码的意思是收听 news 通道内的 News 事件对象,将接收到的事件在控制台打印出来。

基本构建

npm install && npm run watch

以上是“laravel7.0广播机制的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

laravel7.0广播机制的示例分析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

laravel7.0广播机制的示例分析

小编给大家分享一下laravel7.0广播机制的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!laravel7.0广播机制(Redis + socket.
2023-06-20

Linux中cpufreq机制的示例分析

小编给大家分享一下Linux中cpufreq机制的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!从 2.6.0 Linux 内核开始,您可以通过 CPUf
2023-06-27

Session消失机制的示例分析

小编给大家分享一下Session消失机制的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!以前一直以为cookie就是一直保存在客户端的会话信息,而session是保存在服务器断的会话信息,浏览器关闭以后就会被清除发
2023-06-27

Python自省机制的示例分析

这篇文章将为大家详细讲解有关Python自省机制的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。何为自省在计算机编程领域里,自省是一种能力,是通过一定机制在程序运行时获知对象的类型及对象的内部结构
2023-06-21

Zookeeper选取机制的示例分析

小编给大家分享一下Zookeeper选取机制的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Zookeeper 是一个分布式服务框架,主要是用来解决分布式
2023-06-27

Ceph心跳机制的示例分析

这篇文章将为大家详细讲解有关Ceph心跳机制的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1. 心跳介绍心跳是用于节点间检测对方是否故障的,以便及时发现故障节点进入相应的故障处理流程。问题:故障
2023-06-05

Flex事件机制的示例分析

这篇文章主要为大家展示了“Flex事件机制的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Flex事件机制的示例分析”这篇文章吧。什么是Flex事件机制Flex事件可以看作是一种触发机制
2023-06-17

java中锁机制的示例分析

这篇文章主要介绍java中锁机制的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!何为同步?JVM规范规定JVM基于进入和退出Monitor对象来实现方法同步和代码块同步,但两者的实现细节不一样。代码块同步是使
2023-06-19

Flex绑定机制的示例分析

这篇文章给大家分享的是有关Flex绑定机制的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Flex绑定机制在我们了解了事件机制后,那么理解Flex绑定就不难了,Flex绑定其实也是事件机制的运用。1.什么
2023-06-17

Flex中Hook机制的示例分析

小编给大家分享一下Flex中Hook机制的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!在前一篇简要介绍了基于Flex的界面组合SDK,其中使用Hook机制实现UI Part生命周期管理、Master-Detail
2023-06-17

CocosCreator消息分发机制的示例分析

这篇文章将为大家详细讲解有关CocosCreator消息分发机制的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。概述本篇开始介绍游戏业务架构相关的内容。在游戏业务层,所有需要隔离的系统和模块间通信
2023-06-14

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录