From d1af1b8337591363e60c286348501a841138dbb3 Mon Sep 17 00:00:00 2001
From: wei <kaede@kaededeMacBook-Air.local>
Date: 星期四, 24 十二月 2020 16:00:09 +0800
Subject: [PATCH] 20201224-3

---
 HDL_ON/DAL/Mqtt/MqttClient.cs |   56 ++++++++++++++++++++++++++++++--------------------------
 1 files changed, 30 insertions(+), 26 deletions(-)

diff --git a/HDL_ON/DAL/Mqtt/MqttClient.cs b/HDL_ON/DAL/Mqtt/MqttClient.cs
index 4ddfc8e..eb7a731 100644
--- a/HDL_ON/DAL/Mqtt/MqttClient.cs
+++ b/HDL_ON/DAL/Mqtt/MqttClient.cs
@@ -119,7 +119,7 @@
         /// <summary>
         /// 澶栫綉鐨凪QTT鏄惁姝e湪杩炴帴
         /// </summary>
-        public static bool remoteMqttIsConnecting;
+        public static bool RemoteMqttIsConnecting;
         static bool remoteIsConnected;
 
         static MqttClient()
@@ -138,6 +138,8 @@
                     {
                         System.Threading.Thread.Sleep(500);
                         if (!Control.Ins.IsRemote) continue;
+                        //杩涘叆鍚庡彴涓嶅鐞�
+                        if (MainPage.IsEnterBackground) continue;
 
                         await StartCloudMqtt();
                         await SubscribeTopics();
@@ -184,9 +186,14 @@
                         Topic = $"/user/{MqttInfoConfig.Current.HomeGatewayInfo.gatewayId}/app/thing/property/send",
                         QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce
                     };
+                    var topicBusStatus = new MqttTopicFilter()
+                    {
+                        Topic = $"/BusGateWayToClient/MacMask/Common",
+                        QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce
+                    };
 
                     Utlis.WriteLine("寮�濮嬭闃咃紒");
-                    var result = await RemoteMqttClient.SubscribeAsync(new MqttTopicFilter[] { topicFilterBusGateWayToClient, topicFilterPush2 , topicAlinkStatus });
+                    var result = await RemoteMqttClient.SubscribeAsync(new MqttTopicFilter[] { topicFilterBusGateWayToClient, topicFilterPush2, topicAlinkStatus, topicBusStatus });
                     if (result.Items[0].ResultCode == MQTTnet.Client.Subscribing.MqttClientSubscribeResultCode.GrantedQoS0)
                     {
                         isSubscribeSuccess = true;
@@ -221,7 +228,7 @@
             }
 
             //杩藉姞锛氭病鏈夎繙绋嬭繛鎺ョ殑鏉冮檺
-            if (remoteMqttIsConnecting || remoteIsConnected)
+            if (RemoteMqttIsConnecting || remoteIsConnected)
             {
                 return;
             }
@@ -232,7 +239,7 @@
                 try
                 {
                     #region 鍒濆鍖栬繙绋婱qtt
-                    remoteMqttIsConnecting = true;
+                    RemoteMqttIsConnecting = true;
                     RemoteMqttClient = new MqttFactory().CreateMqttClient();
 
 
@@ -283,10 +290,19 @@
                                         {
                                             packet.Bytes = e.ApplicationMessage.Payload;
                                         }
+#if DEBUG
+                                        //string ddd = "";
+                                        //foreach (var bb in packet.Bytes)
+                                        //{
+                                        //    ddd += bb + ",";
+                                        //}
+                                        //MainPage.Log($"mqtt bus data:{ddd}");
+#endif
                                         packet.Manager();
                                     }
                                     else
                                     {
+                                        MainPage.Log($"mqtt A-Link data");
                                         //A鍗忚鏁版嵁澶勭悊
                                         var revString = Encoding.UTF8.GetString(bytes);
                                         Control.Ins.UpdataFunctionStatus(revString,null);
@@ -309,25 +325,9 @@
                     //(3)ConnectedHandler
                     if (RemoteMqttClient.ConnectedHandler == null)
                     {
-                        RemoteMqttClient.UseConnectedHandler(async (e) => {
-                            if (DB_ResidenceData.Instance.HomeGateway.gatewayStatus)
-                            {
-                                Control.Ins.GatewayOnline = true;
-                            }
-                            else
-                            {
-                                //new System.Threading.Thread(() => {
-                                //    while(true)
-                                //    {
-                                //        System.Threading.Thread.Sleep(1000);
-                                //        if (DB_ResidenceData.Instance.HomeGateway.GatewayOnline)
-                                //        {
-                                //            Control.Ins.GatewayOnline = true;
-                                //            break;
-                                //        }
-                                //    }
-                                //}) { IsBackground = true }.Start();
-                            }
+                        RemoteMqttClient.UseConnectedHandler(async (e) =>
+                        {
+                            Control.Ins.GatewayOnline = true;
                             IfNeedReadAllDeviceStatus = true;
                             Utlis.WriteLine($"============>Mqtt杩滅▼杩炴帴鎴愬姛");
                             SendPushSignOut();
@@ -357,7 +357,7 @@
                 finally
                 {
                     //鏈�缁堣閲婃斁杩炴帴鐘舵��
-                    remoteMqttIsConnecting = false;
+                    RemoteMqttIsConnecting = false;
 
                     Utlis.WriteLine($"StartCloudMqtt: 缁撴潫");
                 }
@@ -554,7 +554,12 @@
 
             DisConnectRemoteMqttClient("鎸や笅绾�");
 
-            HDLCommon.Current.CheckLogout();
+            Application.RunOnMainThread(() =>
+            {
+                //寮圭獥鎻愮ず琚尋涓嬬嚎
+                HDLCommon.Current.CheckLogout();
+            });
+           
 
             //UserInfo.Current.LastTime = DateTime.MinValue;
             //UserInfo.Current.SaveUserInfo();
@@ -647,7 +652,6 @@
         /// 鏄惁闇�瑕佽鍙栦竴娆℃墍鏈夎澶囩姸鎬�
         /// </summary>
         static bool IfNeedReadAllDeviceStatus = true;
-        //public static bool IsGatewayOnline = true;
 
         /// <summary>
         /// 璁剧疆缃戝叧鍦ㄧ嚎鏍囧織锛屽苟閲嶇疆CheckGateway鍙傛暟

--
Gitblit v1.8.0