更新记录
1.2.2(2024-10-23)
优化:将连接改为异步连接,防止因为网络原因连接较慢导致页面无法操作
1.2.1(2024-10-16)
添加offPeriodMsg回调函数,详解请看文档
1.2.0(2024-10-15)
主动断开连接函数添加closeClient参数
查看更多
平台兼容性
App |
快应用 |
微信小程序 |
支付宝小程序 |
百度小程序 |
字节小程序 |
QQ小程序 |
HBuilderX 4.21,Android:4.4,iOS:不支持,HarmonyNext:不确定 |
× |
× |
× |
× |
× |
× |
钉钉小程序 |
快手小程序 |
飞书小程序 |
京东小程序 |
× |
× |
× |
× |
H5-Safari |
Android Browser |
微信浏览器(Android) |
QQ浏览器(Android) |
Chrome |
IE |
Edge |
Firefox |
PC-Safari |
× |
× |
× |
× |
× |
× |
× |
× |
× |
使用说明
下载试用本插件后,请重新打包自定义基座
如果使用该插件,请删除自己引入的 mqttv3 相关 jar 包,避免打包自定义基座 class 冲突
该插件可用于连接 mqtt 服务端,也可以用于连接 rabbitMQ 服务端
如果想连接 rabbitMQ
请在rabbitMQ官网下开启 mqtt 插件并且添加对应配置即可
有关于该插件的疑问或者技术探讨可以联系作者(备注来源)
微信号:z1003975792y
API 介绍
1、连接函数 connect
参数 |
类型 |
必填 |
备注 |
option |
object |
是 |
连接参数 |
(res)=>{} |
function |
是 |
连接回调(res.code 200 是成功,500 是失败) |
import {
connect
} from "@/uni_modules/zy-mqtt";
let option = {
host: 'tcp://10.10.xx.xx:1883', // 主机ip
clientId: 'xxxxx', // 客户端id
userName: 'xxxx', // 用户名
password: 'xxxx', // 密码
cleanSession: false, // 可选,默认false,是否开启持续会话
automaticReconnect: true, // 可选,默认true,是否自动重连
heartBeat: 60, // 可选,默认60秒, 心跳
timeOut: 30, // 可选,默认30秒,连接超时时间
offPeriodMsg: (topic, res) => {
console.log(topic, res) // topic 主题 res 收到的消息内容
}, // 可选,用于固定场景,前提是cleanSession为false,场景是打开APP并连接以及订阅某些主题后,突然杀死APP,然后重新打开APP并连接,该回调用于接收在APP在杀死期间收到的消息
keepAlive: false, // 可选,是否保活(息屏保活), 对于Android O及以上版本,如果你的应用处于后台,你需要将服务转变为前台服务来避免系统在一定时间后杀死服务。这需要通过创建一个持续在通知栏显示的通知来实现。
notificationContentText, // 可选,通知内容,默认(应用正在后台运行,这有助于提供定制的服务和改善用户体验。)
notificationContentTitle, // 可选,通知标题,默认(后台应用持续运行)
}
// 先连接mqtt
connect(option, (res) => {
uni.showToast({
title: res.message
})
)
2、订阅主题函数 subscribe
参数 |
类型 |
必填 |
备注 |
topic |
string |
是 |
订阅主题 |
qos |
string |
是 |
QoS(Quality of Service)是 MQTT 协议中用于确保消息传递质量的机制 0:最多一次传输、1 至少一次传输、2 仅一次传输 |
(res)=>{} |
function |
是 |
客户端接收到该主题消息的回调(res:object) |
import { subscribe } from '@/uni_modules/zy-mqtt'
// 下面是其它客户端或者后端发布消息以json的格式
// 例如 {message:'你好,mqtt'}
// 如果不是按照json格式发布消息,res将会是以下数据结构
// res = {
// data: xxx // 服务端怎么发送,前端怎么接,二进制的也可以
// }
subscribe('topic', 2, (res) => {
uni.showToast({
title: res.message, // 你好,mqtt
})
})
3、取消订阅函数 unSubscribe
参数 |
类型 |
必填 |
备注 |
topic |
string |
是 |
要取消订阅的主题 |
(res)=>{} |
function |
是 |
取消订阅的回调(res.code 200 是成功,500 是失败) |
import { unSubscribe } from '@/uni_modules/zy-mqtt'
unSubscribe('topic', (res) => {
uni.showToast({
title: res.message,
})
})
4、发布消息函数 publishMessage
参数 |
类型 |
必填 |
备注 |
topic |
string |
是 |
主题 |
qos |
string |
是 |
QoS(Quality of Service)是 MQTT 协议中用于确保消息传递质量的机制 0:最多一次传输、1 至少一次传输、2 仅一次传输 |
message |
string |
是 |
消息内容 |
(res)=>{} |
function |
是 |
消息发送成功的回调(res.code 200 是成功,500 是失败) |
import { publishMessage } from '@/uni_modules/zy-mqtt'
var messages = JSON.stringify({
message: '你好,mqtt',
phone: '131xxxxxxxx',
})
// 也可以发送不是json的数据,只要序列化后再发送即可
publishMessage('your/topic', 2, messages, (res) => {
uni.showToast({
title: res.message, // 发布消息结果的message
})
})
5、监听连接丢失函数 onConnectLost
参数 |
类型 |
必填 |
备注 |
(res)=>{} |
function |
是 |
连接丢失回调函数 (res.message 丢失原因) |
import { onConnectLost } from '@/uni_modules/zy-mqtt'
onConnectLost((res) => {
uni.showToast({
title: res.message, // 连接丢失的原因
})
})
6、监听自动重新连接函数 onReconnect
automaticReconnect:true 的前提下生效
重新连接后,插件自己会将原来已经订阅的主题主动订阅,无需自己重新订阅
参数 |
类型 |
必填 |
备注 |
(res)=>{} |
function |
是 |
自动重新连接回调函数 (res.code 200 是重新连接成功,500 是重新连接失败) |
import { onReconnect } from '@/uni_modules/zy-mqtt'
onReconnect((res) => {
uni.showToast({
title: res.message, // 重新连接的结果
})
})
7、断开连接函数 disConnect
参数 |
类型 |
必填 |
备注 |
(res)=>{} |
function |
是 |
断开连接的回调函数 (res.code 200 是断开成功,500 是断开失败) |
closeClient |
boolean |
是 |
断开连接是否关闭客户端,如果断开连接后下次重连需要变更 clientId,设置为 true,反之设置为 false |
import { disConnect } from '@/uni_modules/zy-mqtt'
disConnect((res) => {
uni.showToast({
title: res.message,
})
}, false)
8、获取连接状态函数 isConnected
import { isConnected } from '@/uni_modules/zy-mqtt'
console.log(isConnected()) // 返回连接的状态,true表示已连接,false表示未连接
9、获取配置函数 getConfig
import { getConfig } from '@/uni_modules/zy-mqtt'
const config = getConfig()
console.log(getConfig) // 返回连接的所有配置信息