目录

唯一服,主要功能如下

  1. 登录账号验证
  2. agaent负载均衡
  3. 玩家匹配
  4. 房间管理

main.go

主要功能如下:

  1. 启动etcd连接
  2. 启动grpc服务
  3. 连接数据库
  4. 启动web服务器

agents.go

主要功能是维护当前的网关服列表

  1. 通过etcd添加or删除网关
  2. 负载均衡获取网关

game.go

处理游戏房间的问题,房间都是在unique存储的,房间开完准备好,通知到一个game服,后面客户端就是直接往game进行游戏
图中黑色的线表示的是客户端的Session,红色的是服务端的Session

整个游戏开房间的完整步骤如下

  1. 创建房间消息,发UpCreatGameRoomToUnique收CreateGameRoomToClient,消息流向:客户端→网关→唯一服(处理服)→客户端
  2. 加入房间消息,发UpJoinRoomToUnique收DownJoinRoomToClient,消息流向:客户端→网关→唯一服(处理服)→客户端
  3. 游戏准备消息,发UpGameReadToUnique收DownGameReadyToClient,消息流向:客户端→网关→唯一服(处理服)→客户端
    1. 通知游戏服创建房间,目的是随机挑一个游戏服来进行游戏,最终唯一服拿到一个游戏服ID,发UniqueCreateRoomToGame收GameCreateRoomToUnique 消息流向:唯一服→游戏服→唯一服
    2. 拿到游戏服ID后,通知网关服,发CreatRoomSucceedToAgent 消息流向:唯一服→网关
    3. 网关服拿到游戏服ID,建立到游戏服的连接,发JoinRoomToGame收NoticeGameStart,消息流向:网关→游戏服→网关→客户端

离开房间时,game服会关闭从agent服来的Session


loginHandler.go

处理登录相关的一系列流程


上图是登录的流程:

  1. 客户端从unique的web接口请求网关服信息,如果已经连接则会踢人
  2. 客户端拿到网关服信息后发起长连接
  3. 连接成功后发起登录消息到网关服
  4. 网关服去unique验证登录信息
  5. unique给网关服返回登录有效信息
  6. 网关服给客户端下发登录成功信息

register.go

注册协议的回调