登录
首页 >  Golang >  Go问答

gRPC流拦截器中如何访问消息值

来源:stackoverflow

时间:2024-02-09 11:45:26 260浏览 收藏

今日不肯埋头,明日何以抬头!每日一句努力自己的话哈哈~哈喽,今天我将给大家带来一篇《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() 调用后移动 print 即可。

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

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《gRPC流拦截器中如何访问消息值》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>