更新记录

1.0.0(2025-05-28)

代码重构优化


平台兼容性

uni-app(4.28)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
- - - - 4.4 × -
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 快应用-华为 快应用-联盟
- - - - - - - - - - -

uni-app x(4.45)

Chrome Safari Android iOS 鸿蒙 微信小程序
- - 5.0 × - -

使用说明

下载试用本插件后,请重新打包自定义基座

如果使用该插件,请删除自己引入的 mqttv3 相关 jar 包,避免打包自定义基座 class 冲突

该插件可用于连接 mqtt 服务端,也可以用于连接 rabbitMQ 服务端

如果想连接 rabbitMQ 请在rabbitMQ官网下开启 mqtt 插件并且添加对应配置即可

如果特殊要求需要购买源码请联系作者,较贵,望理解

有关于该插件的疑问或者技术探讨可以联系作者(备注来源)

微信号:z1003975792y

API 介绍

1、连接函数 connect

参数 类型 必填 备注
option object 连接参数
import {
    connect
} from "@/uni_modules/zhangyue-mqtt";

let option = {
    host: 'tcp://10.10.xx.xx:1883', // 必填,主机ip
    clientId: 'xxxxx', // 必填,客户端id,不同客户端请保证clientId不同
    userName: 'xxxx',  // 必填,用户名
    password: 'xxxx',  // 必填,密码
    success: (code, msg)=>{  // 必填,连接成功回调函数
        console.log(code, msg)
    },
    fail: (code, msg)=>{ // 必填,连接失败回调函数
        console.log(code, msg)
    }
    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
)

2、订阅主题函数 subscribe

参数 类型 必填 备注
option object 订阅参数
import { subscribe } from '@/uni_modules/zhangyue-mqtt'

// 下面是其它客户端或者后端发布消息以json的格式
// 例如 {message:'你好,mqtt'}
// 如果不是按照json格式发布消息,res将会是以下数据结构
// res = {
//  data: xxx // 服务端怎么发送,前端怎么接,二进制的也可以
// }

subscribe({
    topic: 'test',
    qos: 2, //  QoS(Quality of Service)是 MQTT 协议中用于确保消息传递质量的机制 0:最多一次传输、1 至少一次传输、2 仅一次传输
    callback: (res) => {  // 必填,该主题接收到消息的回调函数
        uni.showToast({
            title: res.message, // 接收到的消息
            icon: 'none'
        })
    },
    success: (code, msg) => { // 必填,订阅成功的回调
        // code 成功码, msg 成功消息 
        console.log(code, msg)
    },
    fail: (code, msg) => { // 必填,订阅失败的回调
        // code错误码,msg 错误信息
        console.log(code, msg)
    }
})

3、取消订阅函数 unsubscribe

参数 类型 必填 备注
option object 取消订阅参数
import { unsubscribe } from '@/uni_modules/zhangyue-mqtt'

unsubscribe({
    topic: 'test',
    success: (code, msg) => { // 必填,取消订阅成功的回调
        // code 成功码, msg 成功消息 
        console.log(code, msg)
    },
    fail: (code, msg) => { // 必填,取消订阅失败的回调
        // code错误码,msg 错误信息
        console.log(code, msg)
    }
})

4、发布消息函数 publish

参数 类型 必填 备注
option object 发布消息参数
import { publish } from '@/uni_modules/zhangyue-mqtt'

var temp = JSON.stringify({
    message: '你好,mqtt',
    phone: '131xxxxxxxx',
})
// 也可以发送不是json的数据,只要序列化后再发送即可
publish({
    topic:' test',  // 必填,主题
    qos: 2, // 必填,QoS(Quality of Service)是 MQTT 协议中用于确保消息传递质量的机制 0:最多一次传输、1 至少一次传输、2 仅一次传输
    message: temp, // 必填,发送的消息体
    isAsyn: true, // 可选,是否采用异步线程的方式发送消息,默认是false
    success: (code, msg) => { // 必填,发送消息成功的回调
        // code 成功码, msg 成功消息 
        console.log(code, msg)
    },
    fail: (code, msg) => { // 必填,发送消息失败的回调
        // code错误码,msg 错误信息
        console.log(code, msg)
    }
})

5、监听连接丢失函数 onLostConnect

参数 类型 必填 备注
option object 连接丢失参数
import { onLostConnect } from '@/uni_modules/zhangyue-mqtt'

onLostConnect({
    callback: (res) => {  // 必填,连接丢失时的回调
        // code 200, msg 连接丢失的原因,控制台也可以看到
        console.log(code, msg)
    },
    success: (code, msg) => { // 必填,开启监听连接丢失成功的回调
        // code 成功码, msg 成功消息 
        console.log(code, msg)
    },
    fail: (code, msg) => { // 必填,开启监听连接丢失失败失败的回调
        // code错误码,msg 错误信息
        console.log(code, msg)
    }
})

6、监听自动重新连接函数 onRecovery

automaticReconnect:true 的前提下生效
重新连接后,插件自己会将原来已经订阅的主题主动订阅,无需自己重新订阅
参数 类型 必填 备注
option object 连接恢复参数
import { onRecovery } from '@/uni_modules/zhangyue-mqtt'

onRecovery({
    callback: (res) => {  // 必填,连接恢复时的回调
        // code 200, msg 连接恢复msg
        console.log(code, msg)
    },
    success: (code, msg) => { // 必填,开启监听连接恢复成功的回调
        // code 成功码, msg 成功消息 
        console.log(code, msg)
    },
    fail: (code, msg) => { // 必填,开启监听连接恢复失败的回调
        // code错误码,msg 错误信息
        console.log(code, msg)
    }
})

7、断开连接函数 closeConnect

参数 类型 必填 备注
(code, msg)=>{} function 断开连接的回调函数 (res.code 200 是断开成功,500 是断开失败)
closeClient boolean 断开连接是否关闭客户端,如果断开连接后下次重连需要变更 clientId,设置为 true,反之设置为 false
import { closeConnect } from '@/uni_modules/zhangyue-mqtt'

closeConnect((code, msg) => {
    console.log(code, msg)
}, true)

8、获取连接状态函数 isConnected

import { isConnected } from '@/uni_modules/zhangyue-mqtt'

console.log(isConnected()) // 返回连接的状态,true表示已连接,false表示未连接

隐私、权限声明

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

网络

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

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

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