x-mqtt-s MQTT消息
进程级单连接 MQTT。new xMqtt() 只是门面,全局只保持一条活连接;再次 create 会断开旧连接,监听保留。
微信仅 WSS,且必须是 WebSocket 网关。 Web / 微信不支持自定义证书,applyTls 为空实现。
兼容性
| Harmony | IOS | Android | WEB | 小程序 |
|---|---|---|---|---|
| 支持 | 支持 | 支持 | 支持 | 支持 |
调用
ts
import { xMqtt, MQTT_SUBSCRIBE, MQTT_PUBLISH_TOPIC, MQTT_CONNECT_OPTS } from "@/uni_modules/x-mqtt-s"
const mqtt = new xMqtt()
mqtt.addEventListener("message", (_type, topic, str) => {
console.log(topic, str)
})
mqtt.create({
protocol: "wss",
path: "/mqtt",
clientId: "tmui4x-" + Date.now(),
server: "broker.emqx.io",
port: 8084,
useSSL: true,
keepAliveInterval: 60,
timeout: 30,
reconnect: true,
clean: true,
rejectUnauthorized: true
} as MQTT_CONNECT_OPTS)
mqtt.connect()
mqtt.subscribe([{ topic: "xui/hi", qos: 1 }] as MQTT_SUBSCRIBE[])
mqtt.publish({
topic: "xui/hi",
qos: 0,
message: "hello",
retained: false
} as MQTT_PUBLISH_TOPIC, (_ok) => {})方法
| 名称 | 参数 | 说明 |
|---|---|---|
| create | MQTT_CONNECT_OPTS | 配置并替换当前连接,不自动 connect |
| connect | 无 | 连接服务器 |
| subscribe | [{ topic, qos }] | 订阅;未连上会在连上后补订 |
| unsubscribe | topics: string[] | 取消订阅 |
| publish | { topic, message, qos, retained } + (isSuccess) => void | 推送 |
| disconnect | 无 | 断开,保留监听 |
| destroy | 无 | 断开并清空监听 |
| addEventListener | open / disconnect / dissconnect / error / message | 返回监听 id |
| removeEventListener | id | 按 id 移除 |
| getState | 无 | wait / opening / open / dissconnect / error |
| applyTls | MQTT_TLS_OPTS | 写入证书配置,下次 create 生效。Web / 微信空实现 |
dissconnect 与 disconnect 等价,旧监听名继续可用。
证书
Android / iOS / Harmony 从各端插件资源目录读取证书,更换后重新打包:
| 平台 | 目录 |
|---|---|
| Android | utssdk/app-android/assets/ |
| iOS | utssdk/app-ios/Resources/ |
| Harmony | utssdk/app-harmony/resources/rawfile/ |
| 字段 | 说明 |
|---|---|
| certName | CA:ca.crt / ca.pem。若为 .p12 则作为客户端证书 |
| clientCertName | 客户端证书。Android/iOS 用 p12;Harmony 用 pem |
| clientKeyName | Harmony mTLS 私钥 pem |
| certPassword | p12 或私钥密码 |
| rejectUnauthorized | 默认 true。allowUntrustCACertificate: true 仍兼容,等价于关闭校验 |
| serverName | SNI,默认 server |
仓库自带示例 ca.crt(公共根 CA)。私有 CA / mTLS 请替换同名文件后重新出包。Web / 微信走系统信任链,自定义证书无效。
协议
- Android / iOS / Harmony:
ws、wss;Android / iOS 额外支持tcp、ssl - Web:
ws、wss - 微信:仅
wss
错误码
| 码 | 含义 |
|---|---|
| 1001 | 系统错误 |
| 1002 | 参数错误 |
| 1005 | 连接超时 |
| 1008 | 当前平台不支持此协议或证书 |
| 1010 | 尚未 create |
| 1011 | 证书加载失败 |
| 1012 | 证书校验失败 |
error 事件的 str 为 errCode:errMsg。
版本
版权归 https://xui.tmui.design 你不得修改及二次开发,仅供 TMUI4 会员商用使用。不得转给非 VIP 会员使用,一经查实数倍赔偿,并追究法律责任。
更新日志
1.1.1(2026-08-16)
- 鸿蒙 type 字段 retained 改为可选,避免 @default 被编译成带初始值的确定赋值
1.1.0(2026-08-16)
- 改为进程级单连接:再次 create 自动断开旧实例,监听保留
- 新增 destroy / getState / applyTls;证书从各端资源目录加载
- 鸿蒙去掉 HAR,改为原生 WebSocket + MQTT 3.1.1
- 统一 clean / will / timeout / retained,并修复微信二次连接与取消监听
1.0.4(2026-04-07)
- 修复ios连接wss失败的问题
1.0.3(2025-08-17)
- 兼容 原生鸿蒙 Next
1.0.2(2025-02-13)
- 兼容微信
1.0.1(2024-09-13)
- ios补充取消订阅的方法。
1.0.0(2024-09-05)
首次发布
