用 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
搭建客户端小程序环境
(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 协议》,转载必须注明作者和本文链接
推荐文章: