hprose/hprose-golang

我想用api来传输文件数据,采用[]byte 作为返回参数可以吗?

vvhh2002 opened this issue · 3 comments

我想写成这种:
func GetUpdate()[]byte

hprose服务器返回大量数据时会自动分段吗?

andot commented

可以使用 GetUpdate() []byte 来返回数据,但数据在返回时会作为整体被序列化。虽然在 tcp,ws 或 http 层传输时,会自动分段(比如 tcp 层肯定会分成一个一个的包,ws层会分成一个一个的数据帧,http 层可能会分成一段一段的chunk来传输),但是接收端最终会在全部接收完之后才会反序列化,并返回最终结果。所以如果你如果打算返回几百M或者几个G的数据时,最好是自己分成几十M的数据段传输,然后自己在客户端组合,毕竟太大的数据在内存里组合也不是很合适,可以考虑一下外部存储。

其实可以考虑有个流化的接口

andot commented

现在的推送功能跟流化的接口差不多。gRPC 的流能实现的功能,hprose 的推送都能实现。