Uniapp/Vue MQTT示例(H5、小程序、APP),踩坑日记

首先安装mqtt,建议使用较为稳定的3.0.0版本

npm install mqtt@3.0.0

引入mqtt

import mqtt from 'mqtt/dist/mqtt.js';

发起订阅,示例代码:

connect() {  
    var self = this  
    var subscribe = "test"
    let options = {  
        clientId:'client_' + Math.random().toString(16).substr(2, 8),  
        connectTimeout: 10000,  
        clean: true  
    }
    // #ifdef H5  
    // 此处的端口为mqtt.js中的http端口,否则H5和手机连接不上mqtt服务器  
    var client = mqtt.connect('ws://127.0.0.1:8888/mqtt',options)  
    // #endif

    // #ifdef MP-WEIXIN||APP-PLUS  
    // 此处需要改成你的主机ip,并保证测试手机跟你的电脑处于同一个局域网  
    var client = mqtt.connect('wx://xxx.xxx.x.xxx:8888/mqtt',options)  
    // #endif

    client.on('connect', function(res) {  
        uni.showToast({  
            title:"连接成功",  
            duration:2000,  
            icon:"none"  
        })  
        client.subscribe(subscribe, function(err) {  
            if (!err) {  
                uni.showToast({  
                    title:"订阅成功",  
                    duration:2000,  
                    icon:"none"  
                })  
            }  
        })  
    }).on('message', function(topic, message) {  
        console.log(JSON.parse(message.toString()))  
    }).on('reconnect', function(topic, message) {  
        console.log("重连")  
    })  
}

值得注意:

1、clientId不能重复,可生成随机数作为clientId;

2、使用条件编译,浏览器环境使用ws://,微信小程序及APP使用wx://,查看源码发现这个库是通过ws和wx来判断是否是浏览器环境,浏览器环境用WebSocket对象,非浏览器环境connectSocket

 并没有wx协议,只是这样区分平台而已;

3、import的时候要引入dist下的mqtt,至于为什么也是很迷惑;

4、如果在H5上正常连接,到模拟器或真机上就一直重连,可检查mqtt版本是否为3.0.0,连接地址前缀是否为wx://,HBuiderX版本是否为3.7.3以上(真实经历,困扰了好几天,一直找不到原因,网上各种方法都试过,最后更新了HBuiderX版本,重新编译运行,就...好了,连接上了...);

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
Uniapp 是一个跨平台开发框架,可以同时开发多个平台的应用,包括微信小程序。如果你想在 Uniapp 的微信小程序中使用 MQTT 协议进行通信,可以按照以下步骤进行: 1. 在 Uniapp 项目中安装相关的 MQTT 插件或库,比如 `uni-mqtt`。可以通过 npm 或者其他方式引入。 2. 在 `main.js` 文件中引入 MQTT 插件,并配置 MQTT 连接参数。例如: ```javascript import mqtt from 'uni-mqtt'; // 配置 MQTT 连接参数 const options = { protocolVersion: 4, // MQTT 协议版本 clean: true, // 清除会话 connectTimeout: 4000, // 连接超时时间 clientId: 'your_client_id', // 客户端 ID username: 'your_username', // 用户名 password: 'your_password', // 密码 }; // 创建 MQTT 实例 const client = mqtt.connect('mqtt://your_broker_address', options); // 将 MQTT 实例挂载到 Vue 原型上,方便在组件中使用 Vue.prototype.$mqtt = client; ``` 3. 在需要使用 MQTT 的组件中,可以通过 `$mqtt` 来订阅和发布消息。例如: ```javascript // 订阅主题 this.$mqtt.subscribe('your_topic'); // 接收消息 this.$mqtt.on('message', (topic, message) => { console.log('Received message:', message.toString()); }); // 发布消息 this.$mqtt.publish('your_topic', 'Hello MQTT!'); ``` 以上是使用 Uniapp 的微信小程序中使用 MQTT 的基本步骤。具体的配置和使用方式可能会有些差异,可以根据具体的 MQTT 插件或库的文档进行参考和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值