diff --git a/jetlinks-components/network-component/network-core/src/main/java/org/jetlinks/community/network/utils/DeviceGatewayHelper.java b/jetlinks-components/network-component/network-core/src/main/java/org/jetlinks/community/network/utils/DeviceGatewayHelper.java index 44c0407a..af755828 100644 --- a/jetlinks-components/network-component/network-core/src/main/java/org/jetlinks/community/network/utils/DeviceGatewayHelper.java +++ b/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 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 then = sessionManager .registerChildren(deviceId, children.getDeviceId())