游戏服务器对agent只提供一个接口, 即:
rpc Stream(stream Game.Frame) returns (stream Game.Frame);
接收来自agent的请求Frame流,并返回给agent响应Frame流
来自设备的数据包,通过agent后直接透传到game server, Frame大体分为两类:
- 链路控制(register, kick)
- 来自设备的经过agent解密后的数据包 (message)
数据包(message)格式为:
协议号+数据
+----------------------------------+
| PROTO(2) | PAYLOAD(n) |
+----------------------------------+
在client_handler目录中绑定对应函数进行处理,协议生成和绑定通过tools目录中的脚本进行。
协议的绑定参考 https://github.com/gonet2/tools/tree/master/proto_scripts
源码阅读从src/game/main.go开始
参考Dockerfile
NSQD_HOST: eg : http://172.17.42.1:4151