Laravel 5.7 中广播实践,使用websocket(Redis + socket.io) 技术接收

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: Laravel 5.7 中广播实践,使用websocket(Redis + socket.io) 技术接收

用Laravel有一年多了,但是广播这块一直没涉及到,最近看着官方文档结合实用场景,使用最新版本的Laravel5.7做了一个小例子,具体流程如下:

  • 使用Laravel的广播机制触发广播事件,使用Redis驱动
  • 使用Laravel的队列读取事件,Redis驱动发布出去
  • laravel-echo-server通过Redis收听到该事件
  • laravel-echo-server通过socket.io将事件对象发送给laravel-echo
  • laravel-echo解析接收到的事件对象

创建项目

使用官方的集成环境Homestead,创建项目过程略过,直接从使用广播相关的部分开始。

  • 打开 config/app.php 找到 'provides' 属性,将 BroadcastServiceProvider 前的注释去掉。
  • 编辑 .env 文件,修改BROADCAST_DRIVER=redis
  • 创建广播事件,自动在app/Events和app/Listeners生成文件。
# php artisan make:event TriggerAlarm
  • 创建该事件的触发路由,routes/channels.php添加内容。
  • 项目增加 predis依赖
# composer require predis/predis

相关文件内容如下:
image
image

发布广播

  • 通过postman调用路由
    image
  • 通过 redis-cli 查看当前redis中的数据
    image
  • 让队列消费事件
    image
  • 再查看redis数据,发现已被消费掉。
    image

订阅广播

  • 使用 Redis + socket.io方式转发接收,需要安装开源项目 laravel-echo-server
// 安装
# npm install -g laravel-echo-server
// 初始化,默认即可,在项目根目录下生成 laravel-echo-server.json 配置文件,修改devMode 修改为 true。
# laravel-echo-server init
// 启动
# laravel-echo-server start

截图如下:
image

  • 前端通过laravel-echo 接收广播
$ npm i --save socket.io-client
$ npm i --save laravel-echo
  • 打开 /resources/assets/js/bootstrap.js 在这个文件的结尾已经预先写上了 laravel-echo 的使用例子,进行修改。
    image
  • 创建页面,在 resources/views/ 下建立页面 triggerAlalm.blade.php 内容如下截图,并增加对应的路由。
    image

image

  • 关闭laravel-echo-server,然后构建前端文件
# npm install
# npm run dev
  • 重启laravel-echo-server,在浏览器里访问新页面路由。
    image
  • 通过postman触发报警,然后页面收到信息,打开警铃,页面样式变更。
    image
目录
相关文章
|
数据采集 监控 机器人
浅谈网页端IM技术及相关测试方法实践(包括WebSocket性能测试)
最开始转转的客服系统体系如IM、工单以及机器人等都是使用第三方的产品。但第三方产品对于转转的业务,以及客服的效率等都产生了诸多限制,所以我们决定自研替换第三方系统。下面主要分享一下网页端IM技术及相关测试方法,我们先从了解IM系统和WebSocket开始。
287 4
|
5月前
|
网络协议 安全 API
WebSocket、Socket、TCP 和 HTTP 的差别与应用场景
WebSocket、Socket、TCP 和 HTTP 是网络通信中的四大“使者”,各具特色:HTTP 适合短时请求,TCP 稳定可靠,Socket 灵活定制,WebSocket 实现实时双向通信。本文用通俗语言解析它们的区别与应用场景,助你为项目选择最合适的通信方式。
2060 3
|
缓存 监控 前端开发
Go 语言中如何集成 WebSocket 与 Socket.IO,实现高效、灵活的实时通信
本文探讨了在 Go 语言中如何集成 WebSocket 与 Socket.IO,实现高效、灵活的实时通信。首先介绍了 WebSocket 和 Socket.IO 的基本概念及其优势,接着详细讲解了 Go 语言中 WebSocket 的实现方法,以及二者集成的重要意义和具体步骤。文章还讨论了集成过程中需要注意的问题,如协议兼容性、消息格式、并发处理等,并提供了实时聊天、数据监控和在线协作工具等应用案例,最后提出了性能优化策略,包括数据压缩、缓存策略和连接管理优化。旨在帮助开发者更好地理解并应用这些技术。
673 3
|
移动开发 NoSQL 网络协议
Redis 管道技术
10月更文挑战第21天
122 3
|
JSON 缓存 NoSQL
Redis 在线查看序列化对象技术详解
Redis 在线查看序列化对象技术详解
265 3
|
负载均衡 网络协议 C#
C#实现WebSocket实时消息推送技术详解
C#实现WebSocket实时消息推送技术详解
887 1
|
存储 缓存 NoSQL
解决Redis缓存击穿问题的技术方法
解决Redis缓存击穿问题的技术方法
367 2
|
前端开发 JavaScript 安全
深入理解Python Web开发中的前后端分离与WebSocket实时通信技术
在现代Web开发中,前后端分离已成为主流架构,通过解耦前端(用户界面)与后端(服务逻辑),提升了开发效率和团队协作。前端使用Vue.js、React等框架与后端通过HTTP/HTTPS通信,而WebSocket则实现了低延迟的全双工实时通信。本文结合Python框架如Flask和Django,探讨了前后端分离与WebSocket的最佳实践,包括明确接口规范、安全性考虑、性能优化及错误处理等方面,助力构建高效、实时且安全的Web应用。
435 2
|
前端开发 API Python
WebSocket技术详解:如何在Python Web应用中实现无缝实时通信
在Web开发的广阔领域中,实时通信已成为许多应用的核心需求。传统的HTTP请求-响应模型在实时性方面存在明显不足,而WebSocket作为一种在单个长连接上进行全双工通信的协议,为Web应用的实时通信提供了强有力的支持。本文将深入探讨WebSocket技术,并通过一个Python Web应用的案例分析,展示如何在Python中利用WebSocket实现无缝实时通信。
385 2