更新记录

1.0.10(2026-06-09)

  1. 支持鸿蒙

1.0.9(2025-06-04)

  1. 增加异步订阅接口asyncSubscribe

1.0.8(2025-03-28)

  1. 修改connect接口适配个别android机型问题
查看更多

平台兼容性

uni-app(3.7.9)

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

uni-app x(3.7.9)

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

其他

多语言 暗黑模式 宽屏模式

mqtt收发数据

支持mqtt 3.x、5.x版本

开发文档

  1. 集成插件,集成插件步骤请参考 https://www.cnblogs.com/wenrisheng/p/18323027

import {
    UTSMqtt
} from "@/uni_modules/wrs-uts-mqtt"
let mqtt = new UTSMqtt()
  • 设置回调

mqtt.setCallback((resp) => {
    this.showMsg(JSON.stringify(resp))
    let opt = resp.opt
    switch (opt) {
        // 连接成功
        case "didConnect":
            break;
            // 断开连接
        case "didDisconnect":
            break;
            // 收到数据
        case "didReceiveMessage":
            let message = resp.message
            let topic = resp.topic
            mqtt.publish(this.sendTopic, {
                qos: message.qos,
                id: message.id,
                retained: message.retained,
                payload: message.payload
            })
            break;
        default:
            break;
    }
})
  • 设置连接参数,开始连接

let params = {}

// 支持两种连接方式:
// 第一种(无证书,enableSSL为false):tcp://192.168.0.1:1883
// 第二种(有证书,enableSSL为true):ssl://192.168.0.1:1883

let enableSSL = true
params.host = "devops.xxxxxx.com"
params.port = 2607
params.username = "7E1a262F"
params.password = "e42A9611"

// enableSSL = false
// params.host = "wg.xxxxxx.cn" // 域名或ip(如:tcp://192.168.0.1:1883, host是192.168.0.1)
// params.port = 1883
// params.username = "admin"
// params.password = "admin"

params.clientID = "xxxaaabb"
// params.keepAlive = 60
params.enableSSL = enableSSL
params.allowUntrustCACertificate = true
params.willMessage = {
    topic: '/last-will',
    payload: JSON.stringify({
        "code": "state",
        "messageType": "online",
        "messageParam": {
            "value": false,
            "userId": "sss"
        }
    }), // 设备掉线消息
    qos: 2, // QoS 级别 1:至少一次传输
    retained: false // 保留消息
}
params.MQTTVersion = 0 // mqtt版本, 0: 3.1~3.1.1版本  3:3.1版本   4:3.1.1版本 5:5版本

// 添加ssl证书
if (enableSSL) {
    switch (uni.getSystemInfoSync().platform) {
        // android
        case 'android': {
            params.cer = {
                ca: UTSMqtt.getResourcePath("/static/ca.cer"),
                cer: UTSMqtt.getResourcePath("/static/client.cer"),
                key: UTSMqtt.getResourcePath("/static/client.key"),
                password: "e42A9611"
            }
        }
        break;
        case "ios": {
            params.cer = {
                filePath: UTSMqtt.getResourcePath("/static/client.p12"),
                password: "123456"
            }
        }
        break;
        case "harmonyos": {
            params.cer = {
                ca: UTSMqtt.getResourcePath("/static/ca.cer"),
                cer: UTSMqtt.getResourcePath("/static/client.cer"),
                key: UTSMqtt.getResourcePath("/static/client.key"),
                password: "e42A9611"
            }
        }
        break;
        default:
            break;
    }
}

mqtt.connect(params, (resp) => {
    let flag = resp.flag
    if (!flag) {
        this.showMsg("连接失败")
    }
})
  • 订阅topic

let topic = this.topic
// qos0 = 0 At least once delivery
//  qos1
// /// Exactly once delivery
// case qos2
// /// !!! Used SUBACK frame only
// case FAILURE = 0x80
let qos = 0
mqtt.subscribe(topic, qos)

// 异步订阅topic
mqtt.asyncSubscribe(topic, qos, (resp)=>{})
  • 取消订阅

let topic = "xxx"
mqtt.unsubscribe(topic)
  • 发送数据

// 同步发送
mqtt.publish(this.sendTopic, {
    qos: 0,
    retained: false,
    payload: [0, 1] // payload支持字节数组或字符串
})

// 异步发送
mqtt.asynPublish(this.sendTopic, {
    qos: 0,
    retained: false,
    payload: [0, 1] // payload支持字节数组或字符串
})
  • 断开连接

mqtt.disconnect()

隐私、权限声明

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

网络权限

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

插件不采集任何数据

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