UNI-APP 在APP 模式下使用 MQTT.JS 遇到的问题以及解决方案

最近一段时间,由于在筹备无调云的 IOT 物联网终端,使用到了MQTT 作为服务端和 APP 进行实时通讯的方案。

因此需要在由uni.app 编译的 app 环境中使用 mqtt.js 。

首先在这里引入 github 中目前主流的 mqtt.js 框架

https://github.com/mqttjs/MQTT.js

由于uni.app 在app 模式下,并不是基于原生的 webview 去构建的,因此在MQTT JS 中, 直接使用WebSocket 对象会出现错误。uni.app 为解觉这个问题提供了一个 api 接口,可以使用 uni.createSocket 方法来新建 websocket 连接。在基于mqtt.js 构建的uni-app [APP]应用中,需要使用 uni 的内置方法来重写原有的 websocket 对象的逻辑。

这里贴上我基于 https://ext.dcloud.net.cn/plugin?id=7086 的 uni-app 插件修改后的 uni_mqtt.js (删除了作者的console.log ,已经后台采集数据的恶意代码)

使用方法和 mqtt.js 相同,只是在 uni-app构建的APP 应用中,需要使用 {uni://} (对应ws://),{unis://}(对应wss://) 来连接 MQTT 服务器

点击这里下载 uni-mqtt.js 

使用方法


const mqtt = require('@/common/uni-mqtt')
let mqtt_client = mqtt.connect('unis://xxx.xxx.xxx:443/xxxx',option);
// 订阅消息, 发布消息等 参阅原版 mqtt.js

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注