|
|
const app = getApp()
|
|
|
const mqtt = require("mqtt.js")
|
|
|
/**
|
|
|
*
|
|
|
*/
|
|
|
var mqttClient = function() {
|
|
|
app.client = mqtt.connect('wxs://iotv2.ffcygl.com/mqtt', {
|
|
|
// 心跳请求,单位s
|
|
|
keepalive: 30,
|
|
|
clientId: app.openId,
|
|
|
protocolId: 'MQTT',
|
|
|
protocolVersion: 4,
|
|
|
username: 'admin',
|
|
|
password: 'admin',
|
|
|
reconnectPeriod: 5000,
|
|
|
});
|
|
|
|
|
|
app.client.on('message', function(topic, message, packet) {
|
|
|
console.log(message.toString());
|
|
|
if (app.that) app.that.onMessage(topic, JSON.parse(message.toString()));
|
|
|
});
|
|
|
|
|
|
app.client.on('connect', function(err) {
|
|
|
console.log("监听连接状态", err);
|
|
|
});
|
|
|
|
|
|
app.client.on('close', function(res) {
|
|
|
// console.log("监听连接关闭");
|
|
|
if (!app.client._activeEndFlag) {
|
|
|
// 重新建立连接
|
|
|
app.client.reconnect()
|
|
|
}
|
|
|
});
|
|
|
|
|
|
app.client.on('error', function(err) {
|
|
|
console.log("连接失败", err);
|
|
|
});
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* mqtt 重新连接
|
|
|
*/
|
|
|
var mqttConnect = function() {
|
|
|
if (app.client == null) {
|
|
|
mqttClient();
|
|
|
}
|
|
|
app.client.reconnect()
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* mqtt 断开连接
|
|
|
*/
|
|
|
var mqttClose = function() {
|
|
|
if (app.client == null) {
|
|
|
mqttClient();
|
|
|
}
|
|
|
app.client.end(true, function(err) {
|
|
|
console.log("断开连接", err);
|
|
|
});
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 订阅主题
|
|
|
*/
|
|
|
var mqttSubscribe = function(top, page) {
|
|
|
if (app.client == null) {
|
|
|
mqttClient();
|
|
|
}
|
|
|
if (top == 1 && app.appTop1) {
|
|
|
mqttunSubscribe(app.appTop1);
|
|
|
}
|
|
|
if (top == 2 && app.appTop2) {
|
|
|
mqttunSubscribe(app.appTop2);
|
|
|
}
|
|
|
|
|
|
console.log("开始订阅信息" + top, mqttTop(top));
|
|
|
app.client.subscribe(mqttTop(top), function(err) {
|
|
|
console.log("订阅主题" + mqttTop(top), err);
|
|
|
})
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 订阅主题
|
|
|
*/
|
|
|
var mqttSubscribe1 = function(top) {
|
|
|
app.client.subscribe(top, function(err) {
|
|
|
console.log("订阅主题", err);
|
|
|
})
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 取消订阅
|
|
|
*/
|
|
|
var mqttunSubscribe = function(top) {
|
|
|
app.client.unsubscribe(top, function(err) {
|
|
|
console.log("取消订阅", err,top);
|
|
|
});
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 发布订阅
|
|
|
*/
|
|
|
var mqttPubish = function(top) {
|
|
|
if (app.client == null) {
|
|
|
mqttClient();
|
|
|
}
|
|
|
app.client.publish(top, "hello");
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 接收消息
|
|
|
*/
|
|
|
var mqttOn = function(that) {
|
|
|
if (app.client == null) {
|
|
|
mqttClient();
|
|
|
}
|
|
|
app.that = that;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 订单主题
|
|
|
*/
|
|
|
var mqttTop = function(type) {
|
|
|
var store = wx.getStorageSync("store");
|
|
|
var tenantId = app.globalData.tenantId;
|
|
|
var storeId = store.storeId;
|
|
|
if (type == 1) { // 接单主题
|
|
|
return app.appTop1 = app.baseTopic + "/" + app.openId;
|
|
|
}
|
|
|
|
|
|
if (type == 2) { // 售罄主题
|
|
|
return app.appTop2 = app.baseTopic2 + "/" + tenantId + "/" + storeId;
|
|
|
}
|
|
|
|
|
|
if (type == 3) {
|
|
|
return app.getPayCode();
|
|
|
}
|
|
|
if (type == 4) {
|
|
|
return app.getCouponConsumeCode(app.globalData.oldCode);
|
|
|
}
|
|
|
if (type == 5) {
|
|
|
return app.appTop3 = app.baseTopic3+ "/" + tenantId + "/" + storeId;
|
|
|
}
|
|
|
if(type==6) { //骑手接单
|
|
|
var orderNo=app.globalData.orderNo;
|
|
|
return app.baseTopic4 + "/" + tenantId + "/" + orderNo;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
module.exports = {
|
|
|
mqttunSubscribe: mqttunSubscribe,
|
|
|
mqttSubscribe: mqttSubscribe,
|
|
|
mqttPubish: mqttPubish,
|
|
|
mqttOn: mqttOn,
|
|
|
mqttTop: mqttTop
|
|
|
} |