微信小程序使用mqtt.js连阿里物联网设备,为什么连接上物联网设备后不定时的断开连接,另外小程序切换到后台后就会马上跟物联网设备断开连接,主要代码如下(劳烦各位大佬解惑):
import mqtt from'../../utils/mqtt.js';
const aliyunOpt = require('../../utils/aliyun/aliyun_connect.js');
let that = null;
Page({
data:{
client:null,//记录重连的次数
reconnectCounts:0,//MQTT连接的配置
options:{
protocolVersion: 4, //MQTT连接协议版本
clean: false,
reconnectPeriod: 1000, //1000毫秒,两次重新连接之间的间隔
connectTimeout: 30 * 1000, //1000毫秒,两次重新连接之间的间隔
resubscribe: true, //如果连接断开并重新连接,则会再次自动订阅已订阅的主题(默认true)
clientId: '',
password: '',
username: '',
},
aliyunInfo: {
productKey: '**********', //阿里云连接的三元组 ,请自己替代为自己的产品信息!!
deviceName: '**********', //阿里云连接的三元组 ,请自己替代为自己的产品信息!!
deviceSecret: '****************', //阿里云连接的三元组 ,请自己替代为自己的产品信息!!
regionId: 'cn-shanghai', //阿里云连接的三元组 ,请自己替代为自己的产品信息!!
pubTopic: '/*********/**********/thing/event/property/post', //发布消息的主题
subTopic: '/*********/**********/thing/service/property/set', //订阅消息的主题
},
},
onLoad:function(){
that = this;
let clientOpt = aliyunOpt.getAliyunIotMqttClient({
productKey: that.data.aliyunInfo.productKey,
deviceName: that.data.aliyunInfo.deviceName,
deviceSecret: that.data.aliyunInfo.deviceSecret,
regionId: that.data.aliyunInfo.regionId,
port: that.data.aliyunInfo.port,
});
console.log("get data:" + JSON.stringify(clientOpt));
let host = 'wxs://' + clientOpt.host;
console.log("get data:" + JSON.stringify(clientOpt));
this.setData({
'options.clientId': clientOpt.clientId,
'options.password': clientOpt.password,
'options.username': clientOpt.username,
})
console.log("this.data.options host:" + host);
console.log("this.data.options data:" + JSON.stringify(this.data.options));
this.data.client = mqtt.connect(host, this.data.options);
this.data.client.on('connect', function (connack) {
wx.showToast({
title: '连接成功'
})
})
that.data.client.on("message", function (topic, payload) {
console.log(" 收到 topic:" + topic + " , payload :" + payload)
wx.showModal({
content: " 收到topic:[" + topic + "], payload :[" + payload + "]",
showCancel: false,
});
})
//服务器连接异常的回调
that.data.client.on("error", function (error) {
console.log(" 服务器 error 的回调" + error)
})
//服务器重连连接异常的回调
that.data.client.on("reconnect", function () {
console.log(" 服务器 reconnect的回调")
})
//服务器连接异常的回调
that.data.client.on("offline", function (errr) {
console.log(" 服务器offline的回调")
})
},
import mqtt from'../../utils/mqtt.js';
const aliyunOpt = require('../../utils/aliyun/aliyun_connect.js');
可以分享下这两个文件吗
微信机制问题,给你mqtt的连接关闭了,手机息屏或切后台都会出现,加入自动重连解决
啥手机?苹果手机切换到后台应用应该实际上是没启动的