用 Laravel 自带消息模块搭建小程序实时推送消息

环境

服务端:laravel + laravel-echo-server + redis队列 (broadcast)
客户端: laravel-echo + socket.io

服务端环境搭建

(1)安装redis库 redis队列用
(2)修改配置文件.env中 redis、broadcast 为redis
(3)打开配置app.php 中BroadcastServiceProvider 服务;因为私有频道认证时会用到
(4)因为我们是通知,laravel提供内置命令make:notification生成消息事件,当然广播也是类似用法,具体可参考官方文档
(5)因为要把消息发送到队列里,所以消息类里要实现implements ShouldQueue
(6)laravel 官方消息提供多种方式broadcast、mail、database、sms等,因为我们用的是broadcast广播
(7)设置routes的channel.php;频道按照User模型App.User.{id}
(8)控制器触发消息发送(别忘了引入Notification)
(9)搭建laravel-echo-server,配置好,如果是https,需要指定证书目录,启动
(10)启动队列侦听php artisan queue:work

用 Laravel 自带消息模块搭建小程序实时推送消息

搭建客户端小程序环境

(1)app.js引入echo和socket.io库.文件链接libs库文件github地址

const io = require('libs/weapp.socket.io.js')
const Echo = require("libs/echo.js")


在onLaunch中:添加:

that.globalData.laravelEcho = new Echo({
      broadcaster: 'socket.io',
      host: 'https://yourhost:6001',
    });

(2)消息页面添加,接收消息代码:
app.globalData.laravelEcho.private('App.User.' + uid).notification((notification){
}
前端比较简单。这样就可以实时接收到服务端推送的消息。
但是要注意设计到用户认证的时候,记得服务端broadcast路由要加上对应的auth认证中间件,如果是第三方服务器另外还要注意6001出网端口是否开启。

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 3

大佬请问一下,我的小程序报同时使用5个socket如何解决

4年前 评论
hans_real (楼主) 3年前
Undefined_index (作者) 3年前
黄威

微信小程序自带的 websocket 可以和 laravel-echo-server 实现吗

3年前 评论
hans_real (楼主) 3年前
Undefined_index 3年前

问下 为什么可以加入频道 但是无法监听到事件

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!