Преглед изворни кода

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

jay пре 1 година
родитељ
комит
a78bcfdccd

+ 25 - 7
data/components/750da259-ff77-4869-a5a5-12a5433b0e4c/component.js

@@ -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);
     }
 

+ 2 - 0
iot-components/iot-nb-component/src/main/java/cc/iotkit/comp/nb/NBVerticle.java

@@ -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);

+ 25 - 7
iot-components/iot-nb-component/src/main/resources/component.js

@@ -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);
     }