示例#1
0
    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);
        }
    }
示例#2
0
    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;
        }
    }
示例#3
0
    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;
        }
    }