如何在 Golang gRPC 中获取客户端 IP 地址和用户代理?

Fel*_*lix 6 go grpc grpc-go

我设置了一系列 gRPC 请求和响应,它们都可以正常工作,但是当我尝试获取客户端 IP 地址和调用我的 gRPC API 的用户代理时,我卡住了。

我阅读了 Go gRPC 文档和其他来源,但没有找到太多有价值的信息。他们中很少有人谈论 Golang 中的 gRPC。

在设置 gRPC API 时,我应该设置一个键值来在上下文中存储 IP 地址吗?

小智 16

在 Golang GRPC 中,您可以使用

func (UserServicesServer) Login(ctx context.Context, request *sso.LoginRequest) (*sso.LoginResponse, error) {
  p, _ := peer.FromContext(ctx)
  request.Frontendip = p.Addr.String()
  .
  .
}
Run Code Online (Sandbox Code Playgroud)

但是,不要忘记导入 "google.golang.org/grpc/peer"