uni.app开发物联网小程序

1.当切换页面的时候,容易与mqtt服务器断开连接,并报错

在这里插入图片描述
原因:在onLoad事件中,获取参数的时候使用异步获取,但是在事件里面还使用了这个参数,导致mqtt发布的时候,发了一个空主题,导致连接被断开,然后报异常,错误代码如下

onLoad() {
			uni.getStorage({
				key: 'opened_dev',
				success:res=>{
					this.phone = res.data.phone;
					this.dev_id = res.data.dev_id;
					this.dev_name = res.data.name;
					this.dev_note = res.data.note;
					this.regist_time = res.data.regist_time;
					this.dev_type = res.data.type;
					this.img_src = res.data.dev_img;
				}
			});
			
			var globalData = getApp().globalData;
			globalData.on_mqtt_msg(this.msg_handler);//设置接收
			this.send_cmd(0,0);//获取全部信息
			this.timer_id = setInterval(this.get_dht11,3000);
		},

修改后:

onLoad() {
			uni.getStorage({
				key: 'opened_dev',
				success:res=>{
					this.phone = res.data.phone;
					this.dev_id = res.data.dev_id;
					this.dev_name = res.data.name;
					this.dev_note = res.data.note;
					this.regist_time = res.data.regist_time;
					this.dev_type = res.data.type;
					this.img_src = res.data.dev_img;
					
					var globalData = getApp().globalData;
					globalData.on_mqtt_msg(this.msg_handler);//设置接收
					this.send_cmd(0,0);//获取全部信息
					this.timer_id = setInterval(this.get_dht11,3000);
				}
			});
		},

在pub的时候 加验证

mqtt_pub: function(topic, msg) { //发布消息
	if(topic == null || topic == "")return;//topic最容易出现空的问题 会导致Uncaught (in promise) thirdScriptError 小程序的现象是断开连接重连 然后闪一下
	if(msg == null)return;
	if (client && is_connected)
	{
		client.publish(topic, msg);
	}
	console.log("mqtt_pub," + "topic=" + topic + ",msg="+msg);	
},
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值