zinx
zinx copied to clipboard
建议将Message解耦,支持自定义Message格式
当客户端是用其他框架甚至语言时,Server端Message的格式无法兼容,建议将Message的格式做成支持用户自定义的格式。
其他语言使用socket,按照视频里TLV这种传输格式来整理。这个msg的data已经是字节数据了, 按照业务设计model来转换,已经是自定义了。 :)
其他语言使用socket,按照视频里TLV这种传输格式来整理。这个msg的data已经是字节数据了, 按照业务设计model来转换,已经是自定义了。 :)
是否应该将 DataPack 解耦呢?目前 DataPack 是固定的包头长度、固定格式的 封包/拆包 ,如果遇到其他自定义的格式,就只能改源码来适配了...
@slowfall 遇到了同样的问题. 作为乙方. message 以及datapack 都跟框架不一样
@im-zhangxi @volgariver6 DataPack在上几个版本已经进行解耦,应用方重写
type IDataPack interface {
GetHeadLen() uint32 //获取包头长度方法
Pack(msg IMessage) ([]byte, error) //封包方法
Unpack([]byte) (IMessage, error) //拆包方法
}
然后通过IServer
的SetPacket(IDataPack)
设置。
或者通过创建Server从Option传递Hook方法来设置,如下:
//创建一个server句柄
s := znet.NewServer(znet.WithPacket(myPack))