Skip to content

x-mqtt-s MQTT消息

进程级单连接 MQTT。new xMqtt() 只是门面,全局只保持一条活连接;再次 create 会断开旧连接,监听保留

微信仅 WSS,且必须是 WebSocket 网关。 Web / 微信不支持自定义证书,applyTls 为空实现。

兼容性

HarmonyIOSAndroidWEB小程序
支持支持支持支持支持

调用

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) => {})

方法

名称参数说明
createMQTT_CONNECT_OPTS配置并替换当前连接,不自动 connect
connect连接服务器
subscribe[{ topic, qos }]订阅;未连上会在连上后补订
unsubscribetopics: string[]取消订阅
publish{ topic, message, qos, retained } + (isSuccess) => void推送
disconnect断开,保留监听
destroy断开并清空监听
addEventListeneropen / disconnect / dissconnect / error / message返回监听 id
removeEventListenerid按 id 移除
getStatewait / opening / open / dissconnect / error
applyTlsMQTT_TLS_OPTS写入证书配置,下次 create 生效。Web / 微信空实现

dissconnectdisconnect 等价,旧监听名继续可用。

证书

Android / iOS / Harmony 从各端插件资源目录读取证书,更换后重新打包:

平台目录
Androidutssdk/app-android/assets/
iOSutssdk/app-ios/Resources/
Harmonyutssdk/app-harmony/resources/rawfile/
字段说明
certNameCA:ca.crt / ca.pem。若为 .p12 则作为客户端证书
clientCertName客户端证书。Android/iOS 用 p12;Harmony 用 pem
clientKeyNameHarmony mTLS 私钥 pem
certPasswordp12 或私钥密码
rejectUnauthorized默认 trueallowUntrustCACertificate: true 仍兼容,等价于关闭校验
serverNameSNI,默认 server

仓库自带示例 ca.crt(公共根 CA)。私有 CA / mTLS 请替换同名文件后重新出包。Web / 微信走系统信任链,自定义证书无效。

协议

  • Android / iOS / Harmony:wswss;Android / iOS 额外支持 tcpssl
  • Web:wswss
  • 微信:仅 wss

错误码

含义
1001系统错误
1002参数错误
1005连接超时
1008当前平台不支持此协议或证书
1010尚未 create
1011证书加载失败
1012证书校验失败

error 事件的 strerrCode: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)

首次发布

最近更新