public override void ChannelRead(IChannelHandlerContext context, object message)
 {
     SafeProcess(() =>
     {
         var msg = (Message)message;
         if (msg.Type == MessageType.LoginResponse)
         {
             var result = CertifiedResult.FromMessage(msg);
             if (result.IsOK)
             {
                 //认证成功
                 Online(context);
                 context.FireChannelRead(msg);
             }
             else
             {
                 //认证失败
                 ClientEvents.AsyncRaiseError(this.Client, new LoginFailedException(result.Info));
                 context.CloseAsync();
             }
         }
         else
         {
             //不是登录认证的响应,那么交由下一个通道处理器
             context.FireChannelRead(msg);
         }
     }, context);
 }
 private Message BuildLoginResp(CertifiedResult result)
 {
     return(result.ToMessage());
 }