update: nb组件产品上下线逻辑

V0.5.x
jay 2023-08-08 16:33:55 +08:00
parent dc67b35d74
commit a78bcfdccd
3 changed files with 52 additions and 14 deletions

View File

@ -177,6 +177,20 @@ function subRegister(topic, parent, payload) {
};
}
function deviceStateChangeByClientId(head, clientId, state) {
var device = getPkDn(clientId);
return {
type: "state",
data: {
productKey: device.pk,
deviceName: device.dn,
state: state
}
}
}
function deviceStateChange(head, clientId, state) {
var topic = head.topic;
var device = getPkDn(clientId);
@ -243,20 +257,24 @@ this.onReceive = function (head, type, payload) {
if (type == 'auth') {
return register(payload);
}
if (type == 'subscribe') {
return deviceStateChange(head, payload, 'online');
else if (type == 'online') {
return deviceStateChangeByClientId(head, payload, 'online');
}
else if (type == 'subscribe') {
// 此产品无需通过订阅来确认是否上线
return {};
}
if (type == 'unsubscribe') {
return deviceStateChange(head, payload, 'offline');
else if (type == 'unsubscribe') {
// 此产品无需通过订阅来确认是否下线
return {};
}
if (type == 'disconnect') {
else if (type == 'disconnect') {
return disconnect(payload);
}
if (type == 'ota') {
else if (type == 'ota') {
return ota(head, payload);
}

View File

@ -90,6 +90,8 @@ public class NBVerticle extends AbstractVerticle {
endpoint.reject(MqttConnectReturnCode.CONNECTION_REFUSED_NOT_AUTHORIZED);
return;
}
// 固定协议,不需要订阅,直接认为上线
executor.onReceive(null, "online", clientId);
//保存设备与连接关系
endpointMap.put(getEndpointKey(r), endpoint);
mqttConnectPool.put(clientId, true);

View File

@ -177,6 +177,20 @@ function subRegister(topic, parent, payload) {
};
}
function deviceStateChangeByClientId(head, clientId, state) {
var device = getPkDn(clientId);
return {
type: "state",
data: {
productKey: device.pk,
deviceName: device.dn,
state: state
}
}
}
function deviceStateChange(head, clientId, state) {
var topic = head.topic;
var device = getPkDn(clientId);
@ -243,20 +257,24 @@ this.onReceive = function (head, type, payload) {
if (type == 'auth') {
return register(payload);
}
if (type == 'subscribe') {
return deviceStateChange(head, payload, 'online');
else if (type == 'online') {
return deviceStateChangeByClientId(head, payload, 'online');
}
else if (type == 'subscribe') {
// 此产品无需通过订阅来确认是否上线
return {};
}
if (type == 'unsubscribe') {
return deviceStateChange(head, payload, 'offline');
else if (type == 'unsubscribe') {
// 此产品无需通过订阅来确认是否下线
return {};
}
if (type == 'disconnect') {
else if (type == 'disconnect') {
return disconnect(payload);
}
if (type == 'ota') {
else if (type == 'ota') {
return ota(head, payload);
}