예제 #1
0
        /// <summary>
        /// socket read byte array.
        /// </summary>
        /// <param name="context"></param>
        /// <param name="message"></param>
        public override void ChannelRead(IChannelHandlerContext context, object message)
        {
            var packet = message as PacketRequest <IMessage>;

            if (packet == null)
            {
                return;
            }

            PacketResponse <IMessage> packetResponse = null;

            try
            {
                switch (packet.CommandId)
                {
                //获取雇员信息
                case 1001:
                    //解析
                    var requestDTO = packet.Body as TestRequestDTO;

                    //回复
                    var response = new PacketResponse <TestResponseDTO>();
                    response.CommandId = 1001;
                    var errorResponse = new TestResponseDTO {
                        Code = 400, Message = "Illegal message parsing failed!!!"
                    };

                    if (requestDTO == null)
                    {
                        response.Body = errorResponse;
                    }
                    else
                    {
                        var hashVal = requestDTO.HashValue;
                        //var uid = requestDTO.Account;
                        //var pwd = requestDTO.Passworld;
                        var nonce          = requestDTO.Nonce;
                        var sign           = requestDTO.Sign;
                        var time           = requestDTO.ValidateTime;
                        var isVerification = EncryptionUtil.Verification(hashVal, nonce, sign, time);
                        if (isVerification)
                        {
                            response.Body = new TestResponseDTO {
                                Code = 200, Employees = new List <string> {
                                    "zhang san", "li si", "wang wu", "zhao liu"
                                }
                            };
                        }
                        else
                        {
                            response.Body = errorResponse;
                        }
                        if (!isVerification)
                        {
                            context.WriteAndFlushAsync(packetResponse);
                            context.CloseAsync();
                        }
                    }
                    context.WriteAndFlushAsync(packetResponse);


                    break;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Server request read error { ex.Message }");
            }
        }