void CopyMessage(byte[] inHead, byte[] ctrlData) { string front = Encoding.UTF8.GetString(inHead, 0, 4); string back = Encoding.UTF8.GetString(inHead, 4, 4); Debug.Log("Receive Head:" + front + ":" + back); GlobalDebug.Addline("Receive Head:" + front + ":" + back); //处理成功 if (front == "9000") { switch (back) { case "1002": isEnterRoom = true; Debug.Log("成功连接服务器,等待对方上线"); GlobalDebug.Addline("成功连接服务器,等待对方上线"); remoteGUI.SetHelpInfoString("成功连接服务器,等待对方上线"); isUseRemoteGather = true; waitingAck = false; currentRetryCount = 0; break; default: break; } }//处理失败 else if (front == "9001") { switch (back) { case "1002": isEnterRoom = true; Debug.Log("进入房间失败"); GlobalDebug.Addline("进入房间失败"); waitingAck = false; currentRetryCount = 0; break; default: break; } }//收到信息 else if (front == "1004") { lastMessageReceiveFromOtherSidePastTime = 0; RemoteGather.RemoteMessage rMessage = new RemoteGather.RemoteMessage(); if (ctrlData.Length == 74) { rMessage = new RemoteGather.RemoteMessage(ctrlData); } else { } switch (back) { case "0000": string log; if (rMessage != null) { // Debug.Log(rMessage.messageType); switch (rMessage.messageType) { //不能在这里处理,因为该程序不再主线程下运行,将 case 49: case 50: case 51: case 52: RemoteGather.needProcessMessages.Add(rMessage); break; //Ack case 72: log = "Receive CameraStateMessage Ack"; Debug.Log(log); GlobalDebug.Addline(log, true); RemoteGather.lastSendCameraCameraState = cameraStateWhenSendMessage; waitingAck = false; currentRetryCount = 0; break; //Ack case 73: log = "Receive BtnCtrlMessage Ack"; Debug.Log(log); GlobalDebug.Addline(log, true); RemoteGather.needSendBtnCtrlMessages.RemoveAt(0); waitingAck = false; currentRetryCount = 0; break; //Ack case 74: log = "Receive AreYouReady Ack"; Debug.Log(log); GlobalDebug.Addline(log, true); isOtherSideOnline = true; waitingAck = false; currentRetryCount = 0; break; //Ack case 75: log = "Receive ScaleImage Ack"; Debug.Log(log); GlobalDebug.Addline(log, true); RemoteGather.lastSendScaleImageState = scaleImageWhenSendMessage; isOtherSideOnline = true; waitingAck = false; currentRetryCount = 0; break; case 200: log = "Receive 200 OK"; Debug.Log(log); GlobalDebug.Addline(log); //接到空消息 waitingAck = false; break; } } else { //接到空消息 waitingAck = false; } break; default: break; } }//对方挂断 else if (front == "1006") { string log = "Receive 1006 Head 对方主动退出"; Debug.Log(log); GlobalDebug.Addline(log, true); RemoteGather.needProcessMessages.Add(new RemoteGather.RemoteMessage(106)); } else { string log = "front 未知报头:" + front; GlobalDebug.Addline(log); Debug.Log(log); Debug.LogWarning(log); Debug.LogError(log); } }
void ProcessMessage(RemoteGather.RemoteMessage p) { switch (p.messageType) { //CameraStateMessage case 49: string log = "Process CameraStateMessage"; Debug.Log(log); GlobalDebug.Addline(log, true); /* * foreach (float f in p.cameraStates) * { * Debug.Log(f); * } */ RemoteGather.currentCameraUniversal.SetCameraPositionAndXYZCount(p.cameraStates); RemoteGather.needProcessMessages.Remove(p); //Send Ack SendCtrlMessage(new RemoteGather.RemoteMessage(72).GetBytesData(), false); // RemoteGather.needSendAckMessages.Add(new RemoteGather.RemoteMessage(72)); break; //BtnCtrlMessage case 50: string log2 = "Process BtnCtrlMessage"; Debug.Log(log2); GlobalDebug.Addline(log2, true); RemoteGather.ProcessRemoteMessage(p.btnName, p.btnState == 65); RemoteGather.needProcessMessages.Remove(p); log2 = "Btn事件还有:" + RemoteGather.needSendBtnCtrlMessages.Count; Debug.Log(log2); GlobalDebug.Addline(log2); //Send Ack SendCtrlMessage(new RemoteGather.RemoteMessage(73).GetBytesData(), false); // RemoteGather.needSendAckMessages.Add(new RemoteGather.RemoteMessage(73)); break; //AreYouReadyMessage case 51: string log3 = "Process AreYouReady Message"; Debug.Log(log3); GlobalDebug.Addline(log3, true); isOtherSideOnline = true; RemoteGather.needProcessMessages.Remove(p); //Send Ack SendCtrlMessage(new RemoteGather.RemoteMessage(74).GetBytesData(), false); // RemoteGather.needSendAckMessages.Add(new RemoteGather.RemoteMessage(74)); break; //ScaleImageMessage case 52: string log4 = "Process ScaleImage Message"; Debug.Log(log4); GlobalDebug.Addline(log4, true); isOtherSideOnline = true; // Debug.Log(p.btnName); RemoteGather.allScaleImage[p.btnName].SetState(p.scaleImageStates); RemoteGather.needProcessMessages.Remove(p); //Send Ack SendCtrlMessage(new RemoteGather.RemoteMessage(75).GetBytesData(), false); // RemoteGather.needSendAckMessages.Add(new RemoteGather.RemoteMessage(74)); break; //对方断开连接 case 106: string log5 = "Receive 对方主动断开连接"; Debug.Log(log5); GlobalDebug.Addline(log5, true); isOtherSideOnline = false; RemoteGather.needProcessMessages.Remove(p); break; default: break; } }
void ProcessMessage(RemoteGather.RemoteMessage p) { switch (p.messageType) { //CameraStateMessage case 49: string log = "Process CameraStateMessage"; Debug.Log(log); GlobalDebug.Addline(log, true); /* * foreach (float f in p.cameraStates) * { * Debug.Log(f); * } */ RemoteGather.currentCameraUniversal.SetCameraPositionAndXYZCount(p.cameraStates); RemoteGather.needProcessMessages.Remove(p); //Send Ack SendCtrlMessage(new RemoteGather.RemoteMessage(72).GetBytesData(), false); // RemoteGather.needSendAckMessages.Add(new RemoteGather.RemoteMessage(72)); break; //BtnCtrlMessage case 50: string log2 = "Process BtnCtrlMessage"; Debug.Log(log2); GlobalDebug.Addline(log2, true); RemoteGather.ProcessRemoteMessage(p.btnName, p.btnState == 65); RemoteGather.needProcessMessages.Remove(p); log2 = "Btn事件还有:" + RemoteGather.needSendBtnCtrlMessages.Count; Debug.Log(log2); GlobalDebug.Addline(log2); //Send Ack SendCtrlMessage(new RemoteGather.RemoteMessage(73).GetBytesData(), false); // RemoteGather.needSendAckMessages.Add(new RemoteGather.RemoteMessage(73)); break; //AreYouReadyMessage case 51: string log3 = "Process AreYouReady Message"; Debug.Log(log3); GlobalDebug.Addline(log3, true); RemoteGather.needProcessMessages.Remove(p); //Send Ack SendCtrlMessage(new RemoteGather.RemoteMessage(74).GetBytesData(), false); // RemoteGather.needSendAckMessages.Add(new RemoteGather.RemoteMessage(74)); remoteGUI.SucessConnectGUI(); break; //ScaleImageMessage case 52: string log4 = "Process ScaleImage Message"; Debug.Log(log4); GlobalDebug.Addline(log4, true); Debug.Log(p.btnName); RemoteGather.allScaleImage[p.btnName].SetState(p.scaleImageStates); RemoteGather.needProcessMessages.Remove(p); //Send Ack SendCtrlMessage(new RemoteGather.RemoteMessage(75).GetBytesData(), false); // RemoteGather.needSendAckMessages.Add(new RemoteGather.RemoteMessage(74)); break; case 74: string log74 = "Process AreYouReady Ack"; Debug.Log(log74); GlobalDebug.Addline(log74, true); RemoteGather.needProcessMessages.Remove(p); currentRetryCount = 0; remoteGUI.SucessConnectGUI(); break; //StillOnlineMessage case 98: string log5 = "Process StillOnlineMessage"; Debug.Log(log5); GlobalDebug.Addline(log5, true); RemoteGather.needProcessMessages.Remove(p); //Send Ack SendCtrlMessage(new RemoteGather.RemoteMessage(99).GetBytesData(), false); break; //服务器断线 case 106: string log6 = "Receive 服务器断线,尝试重进房间"; Debug.Log(log6); GlobalDebug.Addline(log6); RemoteGather.needProcessMessages.Remove(p); //服务器断线得重新再进房间 ReEnterRoom(); //remoteGUI.OKCloseOnLineTalk("服务器断线"); break; //退出讲盘进入视频通话 case 250: string log250 = "Receive 退出讲盘进入视频通话"; Debug.Log(log250); GlobalDebug.Addline(log250); RemoteGather.needProcessMessages.Remove(p); SendCtrlMessage(new RemoteGather.RemoteMessage(251).GetBytesData(), true); remoteGUI.FinishGotoVediaoTalk(); break; //退出讲盘进入视频通话Ack case 251: string log251 = "Receive 退出讲盘进入视频通话 Ack"; Debug.Log(log251); GlobalDebug.Addline(log251); RemoteGather.needProcessMessages.Remove(p); remoteGUI.FinishGotoVediaoTalk(); break; //退出讲盘 case 252: string log7 = "Receive 退出讲盘"; Debug.Log(log7); GlobalDebug.Addline(log7); RemoteGather.needProcessMessages.Remove(p); SendCtrlMessage(new RemoteGather.RemoteMessage(253).GetBytesData(), true); remoteGUI.FinishOnLineTalk("退出讲盘"); break; //退出讲盘Ack case 253: string log253 = "Receive 退出讲盘 Ack"; Debug.Log(log253); GlobalDebug.Addline(log253); RemoteGather.needProcessMessages.Remove(p); // SendCtrlMessage(new RemoteGather.RemoteMessage(253).GetBytesData(), false); ExitRoomMessageToServer(); remoteGUI.FinishOnLineTalk("退出讲盘 Ack"); //ExitRoom(); break; //收到未知报头,给对方发送收到未知报头 case 254: string log8 = "Receive 收到未知报头"; Debug.Log(log8); GlobalDebug.Addline(log8, true); RemoteGather.needProcessMessages.Remove(p); //收到一个未知报头,也得给对方返回有一个消息,表示己方已收到消息但是不知道是什么消息,请重新发送最后一次消息 未知报头Ack SendCtrlMessage(new RemoteGather.RemoteMessage(255).GetBytesData(), false); break; default: break; } }