zinx icon indicating copy to clipboard operation
zinx copied to clipboard

建议将Message解耦,支持自定义Message格式

Open volgariver6 opened this issue 4 years ago • 4 comments

当客户端是用其他框架甚至语言时,Server端Message的格式无法兼容,建议将Message的格式做成支持用户自定义的格式。

volgariver6 avatar Apr 06 '20 03:04 volgariver6

其他语言使用socket,按照视频里TLV这种传输格式来整理。这个msg的data已经是字节数据了, 按照业务设计model来转换,已经是自定义了。 :)

ycg000344 avatar Apr 06 '20 04:04 ycg000344

其他语言使用socket,按照视频里TLV这种传输格式来整理。这个msg的data已经是字节数据了, 按照业务设计model来转换,已经是自定义了。 :)

是否应该将 DataPack 解耦呢?目前 DataPack 是固定的包头长度、固定格式的 封包/拆包 ,如果遇到其他自定义的格式,就只能改源码来适配了...

slowfall avatar May 24 '20 09:05 slowfall

@slowfall 遇到了同样的问题. 作为乙方. message 以及datapack 都跟框架不一样

Xiaocge avatar Oct 25 '21 08:10 Xiaocge

@im-zhangxi @volgariver6 DataPack在上几个版本已经进行解耦,应用方重写

type IDataPack interface {
	GetHeadLen() uint32                //获取包头长度方法
	Pack(msg IMessage) ([]byte, error) //封包方法
	Unpack([]byte) (IMessage, error)   //拆包方法
}

然后通过IServerSetPacket(IDataPack)设置。

或者通过创建Server从Option传递Hook方法来设置,如下:

	//创建一个server句柄
	s := znet.NewServer(znet.WithPacket(myPack))

aceld avatar Mar 02 '23 05:03 aceld