private void regResult(SocketModelPB model)
    {
        CommonResp resp = CommonResp.ParseFrom(model.Content);

        CommonResp.Types.RespCode result = resp.Code;
        switch (result)
        {
        case CommonResp.Types.RespCode.SUCCESS:
            ClientDataUtil.warnings.Add("注册成功");
            SendMessage("regCannel");
            break;

        case CommonResp.Types.RespCode.REGISTER_ACCOUNT_ALREADY_EXISTS:
            ClientDataUtil.warnings.Add("帐号已存在,注册失败");
            SendMessage("regClick");

            break;

        case CommonResp.Types.RespCode.REGISTER_ACCOUNT_NAME_ILLEGAL:
            ClientDataUtil.warnings.Add("帐号不合法,注册失败");
            SendMessage("regClick");

            break;

        case CommonResp.Types.RespCode.REGISTER_ACCOUNT_PASSWORD_ILLEGAL:
            ClientDataUtil.warnings.Add("密码不合法,注册失败");
            SendMessage("regClick");
            break;
        }
    }
    private void loginResult(SocketModelPB model)
    {
        CommonResp resp = CommonResp.ParseFrom(model.Content);

        CommonResp.Types.RespCode result = resp.Code;
        switch (result)
        {
        case CommonResp.Types.RespCode.LOGIN_ACCOUNT_UNEXIST:
            ClientDataUtil.warnings.Add("帐号不存在,登录失败");
            break;

        case CommonResp.Types.RespCode.LOGIN_PASSWORD_ERROR:
            ClientDataUtil.warnings.Add("密码错误,登录失败");
            break;

        case CommonResp.Types.RespCode.LOGIN_ACCOUNT_ALREADY_ONLINE:
            ClientDataUtil.warnings.Add("帐号已登录,登录失败");
            break;

        default:
            //TODO 登录成功 跳转到角色选择场景
            SendMessage("loading", 1);
            break;
        }
    }
 void messageReceived(SocketModelPB model)
 {
     //判断一级协议 确定当前消息属于哪个模块
     switch (model.Type)
     {
     case Protocol.TYPE_LOGIN:    //登录模块
         login.messageReceived(model);
         break;
     }
 }
    public void messageReceived(SocketModelPB model)
    {
        switch (model.Command)
        {
        case LoginProtocol.LOGIN_SRES:
            loginResult(model);
            break;

        case LoginProtocol.CREATE_ACCOUNT_SRES:
            regResult(model);
            break;
        }
    }
Example #5
0
    private void onData()
    {
        CodedInputStream stream = CodedInputStream.CreateInstance(ioBuff.ToArray());

        if (stream.IsAtEnd)
        {
            isRead = false;
            return;
        }
        // 读取头信息转为int,为body的长度
        int dataSize;

        try
        {
            dataSize = (int)stream.ReadRawVarint32();
        }
        catch (Exception e)
        {
            // 读header失败,有可能是消息不完整,需要等待下一个消息。
            isRead = false;
            return;
        }
        int headerSize = (int)stream.Position;

        // 判断是否已经读到一次完整的信息
        if (dataSize > ioBuff.Count - headerSize)
        {
            //body长度不够 等待下个消息的到来
            isRead = false;
            return;
        }

        // 解析消息体
        byte[]        msg       = stream.ReadRawBytes(dataSize);
        SocketModelPB socketMsg = SocketModelPB.ParseFrom(msg);

        messageList.Add(socketMsg);

        //从消息数组中去掉已经解析完成的数据,保留缓存区的剩余数据
        ioBuff.RemoveRange(0, headerSize + dataSize);
        onData();
    }
Example #6
0
    public void write(int type, int area, int command, ByteString contentMsg)
    {
        SocketModelPB.Builder builder = SocketModelPB.CreateBuilder();
        builder.SetArea(area);
        builder.SetType(type);
        builder.SetCommand(command);
        builder.SetContent(contentMsg);
        SocketModelPB     msg       = builder.Build();
        MemoryStream      stream    = new MemoryStream();
        CodedOutputStream outStream = CodedOutputStream.CreateInstance(stream);

        outStream.WriteMessageNoTag(msg);
        outStream.Flush();
        try
        {
            socket.Send(stream.ToArray());
        }
        catch
        {
            Debug.LogError("网络错误,请重新登录");
        }
    }