问题:
我要用微信小程序连接mqtt,在hbuilderx4.15版本可以正常运行;
在hbuilder4.56中就不能用了。
分析:
- 新版的hbuilderx运行后,微信开发者工具里面发现默认会创建一个wss。
- 按理说微信小程序一次可以连接两个wss,但是自己的wss连不上。
- 旧版没有这个问题,旧版没有发现调试用的ws。
分析2:
另外发现hbuilderx新增了日志打印功能,可能是这个添加的ws功能。
其他:
- 自己的mqtt可能没有连接成功,因为没有发现打印的相关日志.
- 图中出现的“最多连接两个mqtt”是程序发现连接失败触发的重连,导致微信开发者工具认为“多余2个ws”
求解:
有没有办法关闭这个调试?或者解决这个问题?
export const MQTTA = (host = "broker.emqx.io", port = 8084) => {
const clientId = "wxapp_" + Math.floor(Math.random() * 100000)
let client = {}
const msgHandler = {}
return {
connect() {
const mqttOptions = {
keepalive: 30,
clean: false,
connectTimeout: 5000, // Timeout
clientId,
}
const connectUrl = `${host}:${port}/mqtt`;
client = mqtt.connect('wxs://' + connectUrl, mqttOptions);
client.on('connect', () => {
console.log('MQTT: connect.')
});
// 重连
client.on('reconnect', (msg) => {
console.log('MQTT: reconnect', msg)
});
// 错误
client.on('error', () => {
console.log('MQTT: error')
});
// 断开
client.on('end', () => {
console.log('MQTT: end')
});
// 掉线
client.on('offline', (msg) => {
console.log('MQTT: offline', msg)
});
// 收到消息
client.on('message', function(receivedTopic, message) {
msgHandler[receivedTopic](message)
});
// 全局监听是否有关闭mqtt的消息的事件
},
sub(topic, fns) {
msgHandler[topic] = fns
client.subscribe(topic, {
qos: 0
}, function(err) {
if (err) {
console.error('Failed to subscribe to topic:', err);
} else {
console.log(`Subscribed to topic "${topic}"`);
}
});
},
pub(topic, msg) {
client.publish(topic, msg, {
qos: 0,
retain: false
}, function(err) {
if (err) {
console.error('Failed to publish message:', err);
} else {
console.log(`Message published to topic "${topic}":`, msg);
}
});
},
close() {
client.end(true); // 主动断开连接
}
}
}
y***@qq.com (作者)
收到 非常感谢
2025-03-20 04:13