登录
首页 >  Golang >  Go问答

如何向已有的ClientConn添加客户端选项?

来源:stackoverflow

时间:2024-03-05 14:15:26 383浏览 收藏

你在学习Golang相关的知识吗?本文《如何向已有的ClientConn添加客户端选项?》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不可或缺的哦!

问题内容

我正在使用 go 语言编写 grpc 客户端应用程序。

每个 clientconn 都有 jwt 令牌,现在我在使用各种 jwt 令牌应用缓存/重用 clientconn 时遇到一些问题。

以前,我每次都使用新的 jwt 令牌创建 clientconn,如下所示:

conn, err := grpc.Dial(endpoint, WithPerRPCCredentials(oauth.NewOauthAccess(token))

但在我的应用程序中,令牌每次都会更改。但我找不到仅应用新令牌即可重用现有 clientconn 的方法。

有没有办法用现有的 clientconn 替换特定的 dialoption(或替换 jwt 令牌)?

或者这是将 authorization 元数据注入每个 grpc 调用的上下文的最佳方式吗?


解决方案


正如 @apolcyn 提到的,PerRpcCredentials 实现通常负责刷新访问令牌。

如果您有 JWT 令牌,您还可以考虑使用 NewJWTAccessFromFileNewJWTAccessFromKey

在任何情况下,如果您的令牌源可以更改,并且您仍然希望能够使用相同的 ClientConn,则可以使用 CallOption 在您进行的每个 RPC 期间指定您的凭据,而不是在创建期间将其指定为 DialOption您的 ClientConn 的。这是您感兴趣的 callOption:https://godoc.org/google.golang.org/grpc#PerRPCCredentials

将任意元数据注入每个 gRPC 调用的另一个选项是使用客户端拦截器。请参阅 WithUnaryInterceptorWithStreamInterceptor dialOptions。

希望这有帮助。

本篇关于《如何向已有的ClientConn添加客户端选项?》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

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