Forráskód Böngészése

优化子设备离线消息处理

zhou-hao 4 éve
szülő
commit
fdd5be785c

+ 8 - 0
jetlinks-components/network-component/network-core/src/main/java/org/jetlinks/community/network/utils/DeviceGatewayHelper.java

@@ -46,6 +46,14 @@ public class DeviceGatewayHelper {
 
     protected Mono<Void> handleChildrenDeviceMessage(String deviceId, DeviceMessage children) {
         ChildrenDeviceSession deviceSession = sessionManager.getSession(deviceId, children.getDeviceId());
+        //子设备离线
+        if(children instanceof DeviceOfflineMessage){
+            //注销会话,这里子设备可能会收到多次离线消息
+            //注销会话一次离线,消息网关转发子设备消息一次
+            return sessionManager
+                .unRegisterChildren(deviceId,children.getDeviceId())
+                .then();
+        }
         if (deviceSession == null && null != children.getDeviceId()) {
             Mono<Void> then = sessionManager
                 .registerChildren(deviceId, children.getDeviceId())