Gonet2 游戏服务器框架解析之Agent(3)
来源:互联网 发布:哈登场均数据 编辑:程序博客网 时间:2024/04/29 19:58
客户端消息在Agent中的预处理流程。
Agent定义好的三种请求:
//api.govar RCode = map[int16]string{ 0: "heart_beat_req", // 心跳包.. 1: "heart_beat_ack", // 心跳包回复 10: "user_login_req", // 登陆 11: "user_login_succeed_ack", // 登陆成功 12: "user_login_faild_ack", // 登陆失败 13: "client_error_ack", // 客户端错误 30: "get_seed_req", // socket通信加密使用 31: "get_seed_ack", // socket通信加密使用}
上面这段是 api.go中截取的,定义了协议号和对应消息的名称。
以req结尾的是请求,ack结尾的是回复。
//api.govar Handlers map[int16]func(*Session, *packet.Packet) []bytefunc init() { Handlers = map[int16]func(*Session, *packet.Packet) []byte{ 0: P_heart_beat_req, 10: P_user_login_req, 30: P_get_seed_req, }}
还是在api.go中,定义了与请求对应的处理方法,这些方法记录在Handlers中。方法的定义在文件client_handler/handle.go中。
在协议号大于1000的另一个分支,消息被封装成了一个Game_Frame,之后转发到了Game服务器,这个对象是由grpc框架生成的。服务的接口以及数据格式定义如下:
syntax = "proto3";package proto;// game definitionservice GameService { rpc Stream(stream Game.Frame) returns (stream Game.Frame); // 透传消息, 双向流}message Game { enum FrameType { Message = 0; Register = 1; Unregister = 2; Kick = 3; Ping = 4; // for testing } message Frame { FrameType Type=1; bytes Message=2; int32 UserId = 3; }}
在Game服务器中,有这样一个介绍,
游戏服务器对外只提供一个接口, 即:rpc Stream(stream Game.Frame) returns (stream Game.Frame);
所以,接下来,就要到Game服务器的分析了。
0 0
- Gonet2 游戏服务器框架解析之Agent(3)
- Gonet2 游戏服务器框架解析之Agent(1)
- Gonet2 游戏服务器框架解析之Agent(2)
- Gonet2 游戏服务器框架解析之gRPC入门(4)
- Gonet2 游戏服务器框架解析之gRPC提高(5)
- Gonet2 游戏服务器框架解析之Game(6)
- 游戏服务器之的数据服务器的资源框架图
- 游戏服务器框架
- 游戏服务器框架
- 游戏服务器框架
- 游戏服务器框架pomelo
- 游戏服务器框架
- 游戏服务器框架
- 游戏服务器框架
- 游戏服务器框架设计
- 游戏服务器框架 golang
- 游戏服务器框架简述
- PureMVC 游戏框架解析
- awk处理字符串
- 实现android的 google第三方登陆!
- iOS 应用内付费(IAP)开发步骤一:填写相关的税务,银行,联系人信息;
- Java Web项目中web.xml中默认首页访问的是:WebContent目录下的文件
- 真正的成长
- Gonet2 游戏服务器框架解析之Agent(3)
- AngularJs动态增减class样式——ng-class
- ubuntu切换中文语言
- 怎样在几何画板中调节相交圆
- 苹果审核reject理由大全(4):话费、Metadata Rejected
- web service开发2
- HDU1260 Tickets
- ndroid-support-v7-appcompat调用报错
- tomcat优化二