2 回答
TA贡献1785条经验 获得超8个赞
这可以使用自定义编解码器来实现。自定义编解码器可以定义为
type StubbedCodec struct{}
func (cb StubbedCodec) Marshal(v interface{}) ([]byte, error) {
return v.([]byte), nil
}
func (cb StubbedCodec) Unmarshal(data []byte, v interface{}) error {
ba, _ := v.([]byte)
for index, byte := range data {
ba[index] = byte
}
return nil
}
一旦我们有了这个,我们可以将编解码器作为拨号选项传递为
grpc.Dial(grpcServer, grpc.WithInsecure(), grpc.WithBlock(), grpc.WithDefaultCallOptions(grpc.ForceCodec(StubbedCodec{})))
这将强制 grpc 使用您的编解码器,它基本上什么都不做(如上定义)。
TA贡献1783条经验 获得超4个赞
如果要发送原始二进制数据,请使用 protobuf 类型,bytes例如
// .proto file
message MyRawData {
bytes rawbin = 1;
}
这将转换go为字节片,非常适合存储原始二进制文件:
// go-code
type MyRawData struct {
Rawbin []byte `protobuf:"bytes,1,opt,name=rawbin,proto3" json:"rawbin,omitempty"`
}
- 2 回答
- 0 关注
- 110 浏览
添加回答
举报