ET框架-16 ET框架登录账号请求逻辑编写(1)

1. 准备事项

1.1 通过GitClone去拉取ET-EUI项目

目的是为了同步更新
同时也要创建一个自己的分支

1.2 MongoDB正确安装

在这里插入图片描述
在这里插入图片描述

1.3 Robo 3T 数据库可视化软件

Robo 3T 数据库可视化软件是用来对MongoDB数据库进行可视化的
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.数据库相关

2.1 游戏区服

游戏区服的概念就是我们有两个区,比如说区1和区2
那么这两个区对应的数据库也是不一样的,所以我们需要在这里进行配置
在这里插入图片描述
在这里插入图片描述

2.2 创建自己的数据库

由于我们的放置类游戏只需要一个区服,所以创建一个数据库即可

我们打开Robo 3T创建Database 名为ET1
在这里插入图片描述
然后在ET1这个数据库里面创建一个Account集合
在这里插入图片描述

3.定义Account账户实体

我们来思考一下,这个实体是否会被客户端使用,如果不需要,则将Account实体创建在Server的Model数据层下面
在这里插入图片描述
在这里插入图片描述

4.启用MongoDB的功能

在这里插入图片描述
在这里插入图片描述
NetKcpComponent,可以让客户端直接连接到该服务器上面
也可以接受到客户端的连接

添加数据库管理组件DBManagerComponent
Account就有了对数据库进行操作的能力
如果一个进程有多个DBManagerComponent,则会发生错乱
因为它是一个单例
所以一个服务器进程只需要一个,也就是一个区服只需要一个

所以我们可以直接在根节点Scene上面挂载一个,然后整个进程都可以用了
DBManagerComponent
在这里插入图片描述

在这里插入图片描述

5.配置Excel

我们添加Account的服务器
在这里插入图片描述
插入一行,表示我们的账号服务器
在这里插入图片描述
这里为什么Location和Map都没有外网端口呢?因为都不需要连接客户端,只需要连接服务器端就行。比如Location连接Gate,然后Map也连接Gate

6. 查看服务器是否添加成功

编译项目
在这里插入图片描述
导表
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
运行服务器,发现log里面提示创建成功

Scene的类型 Scene的名字 Scene的ID Scene的InstanceID Scene所属的进程
在这里插入图片描述

7. 普通消息的编写

在这里插入图片描述
这里的Token代表的是用户令牌,AccountId是账户的唯一标识
令牌就是用于账号服务器的连接,就是验证码

在这里插入图片描述
然后就是导表
在这里插入图片描述

代码逻辑编写

我们来理一下登录的流程:
1.定义Protobuf里面消息
2.在客户端发送登录消息
3.在服务器处理登录消息,然后返回消息
4.客户端拿到服务器返回的消息,执行下一步操作

8.编写服务器处理消息代码

我们在Serveer下面的Hotfix代码里面创建Account文件夹,表示是Account服务器处理文件夹,我们所有服务器上面和Account相关的都放在这个下面。然后我们创建Handler文件夹,专门用来处理消息
在这里插入图片描述
我们编写对C2A_LoginAccount消息的处理函数,留到下一节去写具体的事件
在这里插入图片描述

9.修改客户端的登录方法

在这里插入图片描述
在这里插入图片描述
我们在登录的逻辑层修改登录的逻辑
我们通过ErrorCode来告诉显示层,调用是否成功
当显示层调用Login这个逻辑层代码的时候,可以通过拿到的返回值来知道是否登录成功

在这里插入图片描述

	public static async ETTask<int> Login(Scene zoneScene, string address, string account, string password)
        {

            A2C_LoginAccount a2C_LoginAccount =null;
            Session accountSession = null;

            try
            {
                //我们从zoneScene上面获取NetKcpComponent的IP地址,通过这个来创建一个新的Session
                accountSession = zoneScene.GetComponent<NetKcpComponent>().Create(NetworkHelper.ToIPEndPoint(address));
                //发送一条登录消息给服务器 拿到服务器的返回消息
                a2C_LoginAccount = (A2C_LoginAccount)await accountSession.Call(
                    new C2A_LoginAccount() {AccountName=account,Password=password});
            }
            catch (Exception e)
            {
                //如果出错

                accountSession?.Dispose();  //关掉session
                Log.Error(e.ToString());    //debug error
                return ErrorCode.ERR_NetWorkError;    //返回错误码,提示登录失败
            }

            //如果错误码不是成功的话
            if (a2C_LoginAccount.Error != ErrorCode.ERR_Success) 
            {
                accountSession?.Dispose();
                return a2C_LoginAccount.Error; //返回Error
            }

            //如果成功,则将session保留给zoneScene,作为通讯的接口
            zoneScene.AddComponent<SessionComponent>().Session = accountSession;

            return ErrorCode.ERR_Success;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值