1.安装
npm install mqtt@3.0.0
2.引入
var mqtt = require('mqtt/dist/mqtt');
3.具体连接代码,包含接受到消息后推送到系统通知栏func
connect() {
var that = this;
let url; //mqtt地址端口
if (process.env.NODE_ENV === 'development') {
url = 'ip:端口/mqtt';
}
let clientId;
if (process.env.VUE_APP_PLATFORM === 'h5') {
clientId = '22222222';
} else {
clientId = plus.push.getClientInfo().clientid;//获取客户端推送标识信息
}
//配置项
const options = {
connectTimeout: 50000,
clientId, //唯一ID
keepalive: 60,// 60秒,设置为0禁用(心跳包发送周期)
qos: 1,//消息等级
resubscribe: true//如果连接断开并重新连接,订阅的主题将自动重新订阅(默认为true)
// clean: true
};
let client;
// #ifdef H5
client = mqtt.connect(
'ws://' + url,
options
);
// #endif
//app的连接是 'wx://' + url。
//#ifdef MP-WEIXIN||APP-PLUS
client = mqtt.connect(
'wx://' + url,
options
);
// #endif
client
.on('connect', function() {
console.log('连接成功');
//topic 这是订阅主题名称
//opic 命名不可以有/否则app端订阅成功会接收不到消息,之前被这个坑了,mqtt官方推荐的是/
client.subscribe(`topic`, function(err) {
if (!err) {
console.log('topic订阅成功');
}
});
})
.on('reconnect', function(error) {
console.log('正在重连...', error);
})
.on('error', function(error) {
console.log('连接失败...', error);
})
.on('end', function() {
console.log('连接断开');
})
.on('message', function(topic, message) {
console.log(message, 1234);
if (message) {
that.sentSystemMessage(message.toString());
}
// 统一接受信息。 topic 是订阅的主题名称,message是监听信息的接收和发送都能接收
});
},
//发送系统消息
sentSystemMessage(data) {
let message = JSON.parse(data);
plus.push.createMessage(message.msg, message.option);
// 使用5+App的方式进行监听消息推送 消息通知栏点击
plus.push.addEventListener(
'click',
function(receive) {
//删除已点击消息
plus.push.remove(receive);
},
false
);
}