Closed xiaonanln closed 4 years ago
现在用的什么序列化?
RPC函数参数这种格式无法确定的东西用的是MessagePack,其他部分没有使用序列化,而是为了追求效率全部是手写的组包和解包代码,例如以下这种:
// SendCallEntityMethodFromClient sends MT_CALL_ENTITY_METHOD_FROM_CLIENT message
func (gwc *GoWorldConnection) SendCallEntityMethodFromClient(id common.EntityID, method string, args []interface{}) error {
packet := gwc.packetConn.NewPacket()
packet.AppendUint16(MT_CALL_ENTITY_METHOD_FROM_CLIENT)
packet.AppendEntityID(id)
packet.AppendVarStr(method)
packet.AppendArgs(args)
err := gwc.SendPacket(packet)
packet.Release()
return err
}
这样确实 很好。尤其是做大并发,可以做棋牌有点麻烦,因为格式比较乱一些。没有想网游那么简单。
期待支持google protobuf
從開 Issue 到現在也有點時間了,如果還有要做的話,或許可以考慮改成 Flatbuffers 了XD
Won't be implemented because it could involve large refactoring.
期待这个功能。