Как добавить clientOption на существующий ClientConn? - PullRequest
0 голосов
/ 19 апреля 2020

Я пишу gRP C клиентское приложение с языком go.

У каждого ClientConn есть токен JWT, теперь у меня возникли проблемы при применении кэширования / повторного использования ClientConn с различными токенами JWT.

Ранее я каждый раз создавал ClientConn с новым токеном JWT, как показано ниже:

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

Но в моем приложении токен меняется каждый раз. Но я не могу найти способ повторно использовать существующий ClientConn с применением только нового токена.

Есть ли способ заменить указанный c DialOption (или заменить токен JWT) существующим ClientConn?

Или это лучший способ вставить Authorization метаданные в контекст для каждого вызова gRP C?

1 Ответ

0 голосов
/ 23 апреля 2020

Как уже упоминалось @apolcyn, реализации PerRpcCredentials обычно заботятся об обновлении токена доступа.

Если у вас есть токен JWT, вы можете также использовать NewJWTAccessFromFile или NewJWTAccessFromKey .

В любом случае, если ваш токен-источник может измениться и вы все еще хотите иметь возможность использовать тот же ClientConn, вы можете использовать CallOption для указания своих учетных данных во время каждого RP C что вы делаете вместо указания его как DialOption во время создания вашего ClientConn. Это интересная функция callOption для вас: https://godoc.org/google.golang.org/grpc#PerRPCCredentials

Другой вариант для вставки произвольных метаданных в каждый вызов gRP C - использовать перехватчики на стороне клиента. См. WithUnaryInterceptor или WithStreamInterceptor dialOptions.

Надеюсь, это поможет.

...