更新记录

1.2.2(2024-10-23)

优化:将连接改为异步连接,防止因为网络原因连接较慢导致页面无法操作

1.2.1(2024-10-16)

添加offPeriodMsg回调函数,详解请看文档

1.2.0(2024-10-15)

主动断开连接函数添加closeClient参数

查看更多

平台兼容性

Vue2 Vue3
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) // 返回连接的所有配置信息

隐私、权限声明

1. 本插件需要申请的系统权限列表:

网络

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问