using LitJson; using Newtonsoft.Json.Linq; using System.Collections; using System.Collections.Generic; using System.Text; using UnityEngine; public class MQTTManager : MonoSingleton { /// /// 获取信令 /// public void Signal() { GameStart.Instance.StartCoroutine(HttpTool.Instance.SendHttp(HttpActionLang.signal_certification, "", SignalCallBack)); // GameStart.Instance.StartCoroutine(HttpTool.Instance.SendHttp(HttpActionLang.userinfo, "", UserInfoCallBack)); // HttpTool.Instance.PostMqtt(HttpAction.signal_certification, "", SignalCallBack); } public void SetAccoutInfo(string account) { MQTTClient.Instance.account = account; } private void SignalCallBack(string msg) { Debug.Log(msg); JObject obj = JObject.Parse(msg); if (obj["code"].ToString() == "200") { HttpActionLang.Instance.mqttSocket = obj["data"]["host"].ToString(); MQTTClient.certification = obj["data"]["certification"].ToString(); MQTTClient.Instance.front = obj["data"]["topicPrefix"].ToString(); MQTTClient.Instance.id = obj["data"]["clientId"].ToString(); MQTTClient.Instance.username = obj["data"]["username"].ToString(); MQTTClient.Instance.Connect(); } else { Debug.LogError("MQTT 获取信令失败 !!!" + obj["code"].ToString()); } } 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(); } else { Debug.LogError("获取用户信息失败 !!!"+ obj["code"].ToString()); } } public void SetRoomId(string id) { MQTTClient.Instance.roomId = id; // MQTTClient.Instance.roomId = "9527"; // 订阅房间频道 MQTTClient.Instance.Subscribe(MQTTClient.Instance.front + "room/" + id); } /// /// 发送消息 /// /// public void PushMsg(string msg) { if (!string.IsNullOrEmpty(msg)) { JsonData json = new JsonData(); json["account"] = MQTTClient.Instance.account; json["Sid"] = "sid";//选择的场景id json["msg"] = msg; MQTTClient.Instance.publish(Encoding.UTF8.GetBytes(json.ToJson())); } } /// /// 接受消息 /// /// public void Received(string msg) { JObject obj = JObject.Parse(msg); Debug.Log("Received ===> " + obj["action"].ToString()); switch (obj["action"].ToString()) { case "timeout": // 超时 UICallManager.Instance.EventTimeOut(); break; case "invite": // 邀请 if(obj["control"]!=null) { string roomid = obj["rtcRoom"].ToString(); UICallManager.Instance.EventInvite(obj["control"].ToString(), roomid); } else { Debug.LogError(" 非控制台邀请 "); } break; case "noexpert": // 无专家 UICallManager.Instance.EventNoExpert(); break; case "chat": // 聊天消息 // 拆解用户名 和 聊天内容 显示到聊天框里 string username = ""; string chatMsg = ""; FileList.Instance.AddMsgItem(null, username, chatMsg); break; case "file": // 接受文件 // 拆解用户名 和 文件名称 显示到聊天框里 下载文件 break; default: break; } } }