如何在 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在客户端也不工作。


开心每一天1111
浏览 74回答 1
1回答

ITMISS

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}
打开App,查看更多内容
随时随地看视频慕课网APP