Closed fancygo closed 5 years ago
如果有protobuf,或者 json这种上层数据协议需要承载,那么在zinx应用端完成解析就好了,handle里发送的序列化只是启动客户端和服务端传输标准。 如果需要发送protobuf,那么直接把protobuf放到data里就好了。
例如:
` //protobuf data := &pb.BroadCast{ Pid:p.Pid, Tp:2, Data:&pb.BroadCast_P{ &pb.Position{ X:p.X, Y:p.Y, Z:p.Z, V:p.V, }, }, }
for _, player := range players{ / 发送消息,使用zinx的SendMsg/ player.SendMsg(200, data) } `
` / handle 处理数据 / type Api2Router struct { fnet.BaseRouter }
func (*Api2Router)Handle(request iface.IRequest){ msg := &pb.BroadCast{} err := proto.Unmarshal(request.GetData(), msg) if err != nil{ logger.Error(err) request.GetConnection().Stop() return } // .... } `
ok, 了解了
每个handle里的数据都不一样,如果不是write一个简单的字符串,比如是另外的proto序列化的数据,怎么能做到统一处理而不用每个handle里都要把数据序列化一遍