如何在 gRPC 流拦截器中获取消息值

五毛

我在服务器中实现了一个 gRPC 流拦截器,如下所示:

// Service define:
// rpc searchProducts(google.protobuf.StringValue) returns (stream Product);

func (w *wrappedStream) RecvMsg(m interface{}) error {
    log.Printf("%T, %v", m, m)
    return w.ServerStream.RecvMsg(m)
}

// Log print:
// *wrapperspb.StringValue, 

它可以%T正确打印使用的消息类型,但打印的消息值%v只是一个空白。

我确信服务器收到了正确的消息,因为它回复了客户端正确的东西。

拦截器包装器RecvMsg也不能在客户端中工作。

美达克斯

w.ServerStream.RecvMsg(m)将数据解组到,调用m后移动打印。RecvMsg()

func (w *wrappedStream) RecvMsg(m interface{}) error {
    err := w.ServerStream.RecvMsg(m)
    log.Printf("%T, %v", m, m)
    return err
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章