ET框架-19 ET框架账号中心服逻辑编写(1)

1. 服务器处理顶号操作

1.1 我们定义一个管理session的组件

在这里插入图片描述
组件中得有一个字典,保存全部的session
这里有个疑问?
为什么我们要保存两个long,accountId和instanceId,为什么不保存对session的引用呢?这样不麻烦吗
在这里插入图片描述

1.2 为我们管理session组件添加System

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

1.3 我们去为创建的Scene添加上我们的组件

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

1.4 将已经上线的Session进行关闭,然后更新我们组件中的SessionInstanceId

我们可以获取到之前登录账户的SessionInstanceId,然后去Game里面拿到
如果不为空,就代表存在,则将其断开
然后更新我们组件中的SessionInstanceId
这里的Add方法,我们在上面定义是,存在即更新的操作
在这里插入图片描述
这个消息呢,我们在这里定义
在这里插入图片描述

在这里插入图片描述

1.5 十分钟等待,如果玩家还没有进行下一步操作,我们就断开Session,避免客户端一直占用Account服务器

定义一个组件AccountCheckOutTimeComponent,专门用来计时然后断开
在这里插入图片描述
在这里插入图片描述
我们断开连接的方法,如下
在这里插入图片描述
我们此时定义一个新的TimerType
在这里插入图片描述
然后我们在组件Awake的时候,开启Timer方法
也就是说,十分钟之后调用我们的DeleSession方法
在这里插入图片描述
不过,有的时候我们的Session是直接断开的,所以我们需要清空我们的Timer
在这里插入图片描述

1.6 挂载上AccountCheckOutTimeComponent组件

在这里插入图片描述
现在我们的session无论任何清空都会在十分钟后自动断开,不会一直占用服务器资源了

2. 运行测试

2.1 Excel表配置Account服务器

在这里插入图片描述
添加一行我们自己Account服务器的数据
在这里插入图片描述

2.2 服务器修改登录的IP地址

在这里插入图片描述
重新生成项目
在这里插入图片描述
Unity Build Code
在这里插入图片描述
然后运行服务器,运行客户端
在这里插入图片描述

2.3 我们故意保留空的字符串,然后点击登录

在这里插入图片描述
在这里插入图片描述
客户端收到消息
我们发现ErrorCode为200003
在这里插入图片描述
原因是客户端发来空的字符串,所以我们服务器认为是错误
然后定义错误码进行返回提示
在这里插入图片描述

2.4 正常登录

首先打开数据库
在这里插入图片描述
输入账号密码然后点击登录
我们发现服务器给我们返回了Token和AccountId
在这里插入图片描述
数据库也存入了账号
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_48781656/article/details/124899665