gate pb - liangmanlin/gootp GitHub Wiki

框架提供了一种开箱即用的协议,如何使用,请参考:go-game-server#定长协议

  • pb.Parse(def map[int]interface{},id int) *Coder

    该api不是线程安全的,请在单线程中加载,当id >= 0 时,你可以通过pb.GetCoder(id int) *Coder 获取。

由于使用了反射,字段需要大写开头。

协议名是一个约定,如下:

  • {Mod}Tos{Method} 库会根据 Mod 和 Method 自动生成协议id。

  • {Mod}Toc{Method}

Tos 表示客户端发送给服务器。

Toc 表示服务器发往客户端。

  • 目前支持打包 map[Struct]*Struct的结构数据,你可以更自由的组合数据结构

  • func (c *Coder) EncodeBuff(proto interface{}, head int, buf []byte) (minBuf []byte)

    Coder新增了一个方法,用于重用buf,目前用在分布式节点打包数据上

这里有一个定义例子:pb_def.go

!!! 强烈建议使用go-game-server来使用该库,因为它实现了更多的自动化。