//Accept里调用;根据messageContent执行相应业务逻辑
        private void Receive(string remoteEndPoint, string info)
        {
            Dictionary <string, string> message;
            MessageContent messageContent;
            MessageType    messageType;

            message = MessageTranslate.AnalyseInfo(info, out messageContent, out messageType);
            IReceiveInfo receiveInfo = new ReceiveInfo(message, remoteEndPoint);

            switch (messageContent)
            {
            case MessageContent.错误:
                Terminal.ClientPrint(remoteEndPoint, InfoType.发送, info);
                break;

            case MessageContent.登录:
                if (messageType == MessageType.请求)
                {
                    LoginRequest(receiveInfo, runningData.Clients_remoteEndPoint[remoteEndPoint]);
                }
                break;

            case MessageContent.创建答疑室:
                if (messageType == MessageType.请求)
                {
                    CreateRoomRequest(receiveInfo, runningData.Clients_remoteEndPoint[remoteEndPoint]);
                }
                break;

            case MessageContent.加入答疑室:
                if (messageType == MessageType.请求)
                {
                    JoinRoomRequest(receiveInfo, runningData.Clients_remoteEndPoint[remoteEndPoint]);
                }
                break;

            case MessageContent.退出答疑室:
                if (messageType == MessageType.通知)
                {
                    ExitRoomInform(receiveInfo, runningData.Clients_remoteEndPoint[remoteEndPoint]);
                }
                break;

            case MessageContent.静音某人:
                if (messageType == MessageType.通知)
                {
                    MuteUserInform(receiveInfo, runningData.Clients_remoteEndPoint[remoteEndPoint]);
                }
                break;

            case MessageContent.发言请求:
                if (messageType == MessageType.通知)
                {
                    SpeakInform(receiveInfo, runningData.Clients_remoteEndPoint[remoteEndPoint]);
                }
                break;
            }
        }
        private void Receive(string info)
        {
            //分析信息
            Dictionary <string, string> receiveMessage = new Dictionary <string, string>();
            MessageContent messageContent;
            MessageType    messageType;

            receiveMessage = MessageTranslate.AnalyseInfo(info, out messageContent, out messageType);
            switch (messageType)
            {
            case MessageType.错误:
                break;

            case MessageType.响应:
                respondMessage = receiveMessage;
                if (waitingRespond)
                {
                    waitingRespond = false;    //得到响应 停止等待
                }
                else
                {
                    throw new Exception("未请求的响应到来");
                }
                break;

            case MessageType.通知:    //未封装的
                if (messageContent == MessageContent.静音自己)
                {
                    someoneMute(receiveMessage["房间名"], UserInfo.UserId, bool.Parse(receiveMessage["是否静音"]));
                }
                else if (messageContent == MessageContent.静音某人)
                {
                    someoneMute(receiveMessage["房间名"], receiveMessage["学号"], bool.Parse(receiveMessage["是否静音"]));
                }
                else if (messageContent == MessageContent.发言请求)
                {
                    SomeoneSpeakInform?.Invoke(receiveMessage["学号"]);
                }
                break;
            }
        }
Пример #3
0
        private void Receive(string info)
        {
            //分析信息
            Dictionary <string, string> receiveMessage = new Dictionary <string, string>();
            MessageContent messageContent;
            MessageType    messageType;

            receiveMessage = MessageTranslate.AnalyseInfo(info, out messageContent, out messageType);
            switch (messageType)
            {
            case MessageType.错误:
                break;

            case MessageType.响应:
                respondMessage = receiveMessage;
                if (waitingRespond)
                {
                    waitingRespond = false;    //得到响应 停止等待
                }
                else
                {
                    throw new Exception("未请求的响应到来");
                }
                break;

            case MessageType.通知:    //未封装的
                if (messageContent == MessageContent.静音自己)
                {
                    callOMCS.Mute(bool.Parse(respondMessage["是否静音"]));
                }
                else if (messageContent == MessageContent.某人退出答疑室)
                {
                    //
                }
                break;
            }
        }