首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >grpc-go中的会话和远程IP地址

grpc-go中的会话和远程IP地址
EN

Stack Overflow用户
提问于 2015-11-13 01:37:24
回答 2查看 4.2K关注 0票数 3

在grpc中,在实现服务时,服务接口定义的方法只包含ContextRequest。从Context的来源来看,它非常简单

代码语言:javascript
复制
type Context interface {
    Deadline() (deadline time.Time, ok bool)

    Done() <-chan struct{}

    Err() error

    Value(key interface{}) interface{}
}

因此,我想知道是否有可能获得一些元数据(包括远程IP地址和其他数据)来维护会话。

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-13 00:43:08

作为跨请求的会话系统,gRPC所提供的(在任何语言中)没有任何东西是特别健壮的。

当您需要为客户端在单个服务器上维护上下文时,流机制是很好的:流回调的堆栈可以指向您需要的任何会话信息。

如果您需要跨不同RPC(或跨机器)的状态,则需要添加您自己的会话层。您可以通过创建在发送请求时附加到(例如)一个“id”元数据元素的唯一id来实现这一点。

票数 3
EN

Stack Overflow用户

发布于 2019-05-12 06:33:57

可以通过使用stats.Handler检索远程IP地址(特别是这个结构https://github.com/grpc/grpc-go/blob/v1.20.x/stats/stats.go#L89)。

grpc.Metadata通常用于存储有关会话的任意信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33684570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档