chenqiyang
2022-05-17 39e83c7df7608b29a3f359bcc6d9ca9b7ff095f5
HDL_ON/DAL/Mqtt/MqttClient.cs
@@ -218,6 +218,12 @@
                        Topic = $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/thing/event/appDeviceRefresh/up",
                        QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce
                    };
                    //设备在线离线状态推送
                    var deviceOnlinePush = new MqttTopicFilter()
                    {
                        Topic = $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/son/session/online",
                        QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce
                    };
                    //appRoomRefresh:房间数据刷新通知
                    var appRoomRefresh = new MqttTopicFilter()
                    {
@@ -253,6 +259,7 @@
                        pirStatus,pirStudy,
                        appDeviceRefresh,appHomeRefresh,appRoomRefresh,residenceChange,
                        topicFilterPush2, topicAlinkStatus ,mqttkeyChange,
                        deviceOnlinePush,
                        securityStatusChange});
                    if (result.Items[0].ResultCode == MQTTnet.Client.Subscribing.MqttClientSubscribeResultCode.GrantedQoS0)
                    {
@@ -344,6 +351,32 @@
                                    var mMes = Encoding.UTF8.GetString(e.ApplicationMessage.Payload);
                                    //新挤下线主题方案 收到挤下线主题
                                    ReceiveNotifySqueezeAsync(mMes);
                                }
                                //设备在线离线状态推送
                                else if(topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/son/session/online")
                                {
                                    try
                                    {
                                        var mMes = Encoding.UTF8.GetString(e.ApplicationMessage.Payload);
                                        Newtonsoft.Json.Linq.JObject pairs = Newtonsoft.Json.Linq.JObject.Parse(mMes);
                                        var pairSid = pairs.GetValue("sid").ToString();
                                        var pairOnline = pairs.GetValue("online");
                                        if (!string.IsNullOrEmpty(pairSid.ToString()))
                                        {
                                            var function_online = FunctionList.List.Functions.Find((obj) => obj.sid == pairSid);
                                            if (function_online != null){
                                                function_online.online = (bool)pairOnline;
                                                HomePage.LoadEvent_RefreshDevcieOnline(function_online);
                                                FunctionPage.UpdataOnline(function_online);
                                                RoomPage.UpdataOnline(function_online);
                                            }
                                        }
                                    }
                                    catch(Exception ex)
                                    {
                                    }
                                }
                                //App订阅红外宝/网关遥控器添加成功通知
                                else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/thing/topo/found")
@@ -458,7 +491,6 @@
                                            if (temp != null)
                                            {
                                                Control_Udp.ReceiveRepeatManager(temp.id, null);
                                                foreach (var updataSecurity in temp.objects)
                                                {
                                                    var updataLocalSecurity = FunctionList.List.securities.Find((obj) => obj.sid == updataSecurity.sid);
@@ -754,6 +786,9 @@
        /// </summary>
        static void ReceiveNotifySqueezeAsync(string mMes)
        {
#if DEBUG
            return;
#endif
            if (mMes == PushSignStr) return;//是自己的登录推送不处理//或者当前不是远程链接状态
            //测试账号,不挤下线
            switch (UserInfo.Current.userMobileInfo)
@@ -810,7 +845,9 @@
        static void SendPushSignOut()
        {
            byte[] message = Encoding.UTF8.GetBytes(PushSignStr);
#if DEBUG
            MqttRemoteSend(message, 4);
#endif
        }
        /// <summary>