agri-app/utils/mqtt.js

69 lines
2.0 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import mqtt from 'mqtt/dist/mqtt.js' //引入mqtt依赖
var client
let mqttConnected = false //mqtt连接状态这个可以不要直接查询client.connected即可
const publishTopic = '/test/123/456/set' //发布Topic
const MQTT_IP = '192.168.9.128:8083/mqtt' //mqtt地址端口
const MQTT_OPTIONS = {
connectTimeout: 5000, //连接超时时间
clientId: 'SiD0FMMAxrs', //clientId不能重复这里可以随机生成
username: 'test', //用户名
password: 'test', //密码
clean: false
}
//创建客户端连接
export function mqttConnect() {
// #ifdef H5
client = mqtt.connect('ws://' + MQTT_IP, MQTT_OPTIONS,function(err){
console.log(err)
})
// #endif
// #ifdef MP-WEIXIN||APP-PLUS
client = mqtt.connect('wx://' + MQTT_IP, MQTT_OPTIONS,function(err){
console.log(err)
})
// #endif
client.on('connect', function() {
console.log('连接成功')
mqttConnected = true
}).on('reconnect', function(error) {
console.log('正在重连...', error)
mqttConnected = false
}).on('error', function(error) {
console.log('连接失败...', error)
mqttConnected = false
}).on('end', function() {
console.log('连接断开')
mqttConnected = false
}).on('close',function(){
console.log('连接关闭')
mqttConnected = false
}).on('offline',function(){
console.log('客户端下线')
})
}
//发布消息
export function mqttPublish(msg){
if(mqttConnected){
client.publish(publishTopic,msg,{qos:1,retain:false});//hello mqtt +
console.log('发布了一条消息',msg)
}else{
uni.showToast({
title: 'MQTT服务器未连接',
icon: 'none'
});
}
}
//断开连接
export function mqttDisconnect(){
console.log('mqttConnected',mqttConnected)
console.log('client',client)
if(mqttConnected){
client.end(true)
mqttConnected = false
}
}