Browse Source

MQTT 信令处理

DGJ 1 year ago
parent
commit
c61933478c

+ 28 - 1
Assets/Game/ShowLogin/LangChaoLogin.cs

@@ -82,8 +82,9 @@ namespace GHZLangChao
                     login.UserInfo.Instance.Token = obj["data"]["token"].ToString();
                     ScenesManager.Instance.showWindow(ScenesManager.SceneType.ShowChoose);
 
+                    MQTTManager.Instance.SetAccoutInfo(mAccountStr);
                     MQTTManager.Instance.Signal();
-
+                    GameStart.Instance.StartCoroutine(HttpTool.Instance.SendHttp(HttpActionLang.userinfo, "", UserInfoCallBack));
                 }
                 else
                     StartCoroutine(PopUp());
@@ -96,5 +97,31 @@ namespace GHZLangChao
             yield return new WaitForSeconds(1);
             mLoginError_go.SetActive(false);
         }
+
+        private void UserInfoCallBack(string msg)
+        {
+            Debug.Log(msg);
+
+            JObject obj = JObject.Parse(msg);
+            if (obj["code"].ToString() == "200")
+            {
+                MQTTClient.Instance._username = obj["data"]["name"].ToString();
+                MQTTClient.Instance.roleId = obj["data"]["roleId"].ToString();
+                MQTTClient.Instance.email = obj["data"]["email"].ToString();
+                MQTTClient.Instance.phone = obj["data"]["phone"].ToString();
+                MQTTClient.Instance.resourcePool = obj["data"]["resourcePool"].ToString();
+                MQTTClient.Instance.expertType = obj["data"]["expertType"].ToString();
+
+                MQTTClient.Instance.Subscribe(MQTTClient.Instance.front + "personnel/" + MQTTClient.Instance.resourcePool);
+
+            }
+            else
+            {
+                Debug.LogError("获取用户信息失败 !!!" + obj["code"].ToString());
+            }
+        }
     }
+
+
+
 }

+ 1 - 1
Assets/HttpActionLang.cs

@@ -3,7 +3,7 @@ using XRTool.Util;
 public class HttpActionLang : Singleton<HttpActionLang>
 {
 
-    public const string signal_certification = "/signal/certification";
+    public const string signal_certification = "/mr-endustry/v1/signal/certification";
 
     public const string signal_contact = "/mr-endustry/v1/signal/contact";
 

+ 24 - 54
Assets/Scripts/MQTT/MQTTClient.cs

@@ -59,7 +59,7 @@ public class MQTTClient : MonoSingleton<MQTTClient>
 
     private void onSucceed()
     {
-        Subscribe();
+        Subscribe(front + "online/" + account);
     }
 
 
@@ -85,47 +85,7 @@ public class MQTTClient : MonoSingleton<MQTTClient>
     {
         string msg = Encoding.UTF8.GetString(obj.Message);
         Debug.Log("uid => " + obj.Topic + ":\n" + msg);
-      //  TestMQTT.Instance.text.text = "uid => " + obj.Topic + ":\n" + msg;
-        try
-        {
-            JsonData data = JsonMapper.ToObject(msg);
-            Debug.Log(" DGJ === > " + data["method"].ToString());
-
-            switch (data["method"].ToString())
-            {
-                //case "CamPos":
-                //    Debug.Log("DGJ   ===>  CamPos");
-                //    // 根据 uid  同步Player 位置  如果没有就创建
-                //  //  MultiPlayerManager.Instance.ReceivedCamPos(obj.Topic, data);
-                //    break;
-                //case "ActiveSp":
-
-                //    // 同步对应景点的开关
-                //    //MultiPlayerManager.Instance.ReceivedActiveSp( data);
-
-                //    break;
-                //case "ActiveVideo":
-
-                //    // 同步播放器的对应状态
-                //  //  MultiPlayerManager.Instance.ReceivedActiveVideo(data);
-                //    break;
-
-                case "coordinate":
-
-                    OnCoordinate?.Invoke(data);
-
-                    break;
-
-                default:
-                    break;
-            }
-
-        }
-        catch
-        {
-            return;
-        }
-
+        MQTTManager.Instance.Received(msg);
     }
 
     private void OnDestroy()
@@ -164,9 +124,9 @@ public class MQTTClient : MonoSingleton<MQTTClient>
 
 
         DisConnect();
-        qt = new QTTManager(id + account,"" , certification, HttpActionLang.Instance.mqttSocket, "1883");
+        qt = new QTTManager(id + account,username , certification, HttpActionLang.Instance.mqttSocket, "1883");
         qt.Connect();
-        //   StartCoroutine(Reconnection());
+        StartCoroutine(Reconnection());
         qt.ConnectionFailed += onFaild;
         qt.ConnectionSucceeded += onSucceed;
         qt.OnConnecting += OnConnecting;
@@ -205,29 +165,39 @@ public class MQTTClient : MonoSingleton<MQTTClient>
             qt.DisConnect();
 
     }
-    //订阅
-    public void Subscribe()
+
+    /// <summary>
+    /// 订阅频道
+    /// </summary>
+    /// <param name="channelID"></param>
+    public void Subscribe(string channelID)
     {
-        Debug.Log(" DGJ   =====> Subscribe " + front + "online/" + account + "     " + front + "room/" + roomId);
-        ushort s = qt.Subscribe(
+        Debug.Log(" DGJ   =====> Subscribe " + channelID);
+        if (qt != null && qt.IsConnect())
+        {
+            ushort s = qt.Subscribe(
                         new string[]
                         {
-                              front+"online/"+account,
-                              front+"room/"+roomId
+                              channelID
+                              //front+"room/"+roomId
 
                         },
                         new byte[]
                         {
-
                                 MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE,
-                                MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE
+                                //MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE
 
                         });
+            Debug.Log(" DGJ   =====> Subscribe2");
+        }
+        else
+            Debug.LogError(" MQTT 未连接 !!!");
+            
 
-        Debug.Log(" DGJ   =====> Subscribe2");
-
+      
     }
 
+
     public void StartSendCameraPos()
     {
         StartCoroutine(sendCameraPos());

+ 49 - 7
Assets/Scripts/MQTT/MQTTManager.cs

@@ -14,7 +14,7 @@ public class MQTTManager : MonoSingleton<MQTTManager>
     {
         GameStart.Instance.StartCoroutine(HttpTool.Instance.SendHttp(HttpActionLang.signal_certification, "", SignalCallBack));
 
-        GameStart.Instance.StartCoroutine(HttpTool.Instance.SendHttp(HttpActionLang.userinfo, "", SignalCallBack));
+      //  GameStart.Instance.StartCoroutine(HttpTool.Instance.SendHttp(HttpActionLang.userinfo, "", UserInfoCallBack));
         // HttpTool.Instance.PostMqtt(HttpAction.signal_certification, "", SignalCallBack);
     }
 
@@ -35,9 +35,8 @@ public class MQTTManager : MonoSingleton<MQTTManager>
             MQTTClient.certification = obj["data"]["certification"].ToString();
             MQTTClient.Instance.front = obj["data"]["topicPrefix"].ToString();
             MQTTClient.Instance.id = obj["data"]["clientId"].ToString();
-            MQTTClient.Instance.email = obj["data"]["email"].ToString();
-            //SetRoomId("");
-            //  
+            MQTTClient.Instance.username = obj["data"]["username"].ToString();
+            MQTTClient.Instance.Connect();
         }
         else
         {
@@ -69,10 +68,17 @@ public class MQTTManager : MonoSingleton<MQTTManager>
     {
         MQTTClient.Instance.roomId = id;
         MQTTClient.Instance.roomId = "9527";
-        MQTTClient.Instance.Connect();
+
+        // 订阅房间频道
+
+        MQTTClient.Instance.Subscribe(MQTTClient.Instance.front + "room/" + id);
+
+      
 
     }
 
+  
+
     /// <summary>
     /// 发送消息
     /// </summary>
@@ -96,10 +102,46 @@ public class MQTTManager : MonoSingleton<MQTTManager>
     /// <param name="msg"></param>
     public void Received(string msg)
     {
-        // 根据字段  对消息进行分类
+        JObject obj = JObject.Parse(msg);
+
+        Debug.Log(obj["action"].ToString());
+
+        switch (obj["action"].ToString())
+        {
+            case "timeout": // 超时
+
+
+                break;
+
+            case "invite": // 邀请
 
 
-        //
+                break;
+
+            case "noexpert": // 无专家
+
+
+                break;
+            case "chat": // 聊天消息
+
+                // 拆解用户名  和 聊天内容  显示到聊天框里
+
+                string username = "";
+                string chatMsg = "";
+
+                FileList.Instance.AddMsgItem(null, username, chatMsg);
+
+                break;
+            case "file": // 接受文件
+
+                // 拆解用户名  和 文件名称  显示到聊天框里
+
+
+
+                break;
+            default:
+                break;
+        }
 
 
     }

+ 1 - 1
Assets/Scripts/Managers/MachineRoomManager.cs

@@ -771,7 +771,7 @@ public class MachineRoomManager : MonoSingleton<MachineRoomManager>
         PlayerPrefs.SetString("MachineRoomTagData", JsonConvert.SerializeObject(data.listTagData));
         PlayerPrefs.SetString("MachineRoomCabinetData", JsonConvert.SerializeObject(data.listEquipmentData));
         PlayerPrefs.SetString("MachineRoomData", JsonConvert.SerializeObject(data));
-        SaveData();
+       // SaveData();
     }
 }
 

+ 18 - 0
Assets/Scripts/UI/ChatManager.cs

@@ -0,0 +1,18 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class ChatManager : MonoBehaviour
+{
+    // Start is called before the first frame update
+    void Start()
+    {
+        
+    }
+
+    // Update is called once per frame
+    void Update()
+    {
+        
+    }
+}

+ 11 - 0
Assets/Scripts/UI/ChatManager.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 4b08e09894d77d64f8b84368f314099f
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: