Android-клиент grpc получает GOAWAY с сервера с ошибкой «слишком много пингов».Теперь я понимаю, что это, вероятно, проблема на стороне сервера, но я думаю, что проблема заключается в том, что настройки канала клиента не совпадают с настройками серверов.
У меня есть сервер C # gRPC со следующими настройками:
List<ChannelOption> channelOptions = new List<ChannelOption>();
channelOptions.Add(new
ChannelOption("GRPC_ARG_HTTP2_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS",
1000));
channelOptions.Add(new
ChannelOption("GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA", 0));
channelOptions.Add(new
ChannelOption("GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS", 1));
this.server = new Server(channelOptions) {
Services = { TerminalService.BindService(this) },
Ports = {new ServerPort("0.0.0.0", 5000,
ServerCredentials.Insecure)}
};
На Android у меня есть следующие настройки канала:
private val channel = ManagedChannelBuilder.forAddress(name, port)
.usePlaintext()
.keepAliveTime(10, TimeUnit.SECONDS)
.keepAliveWithoutCalls(true)
.build()
Через несколько минут (хотя, кажется, случайное время).Я получаю ошибку.Я заметил, что если я передаю данные по вызову, то ошибка никогда не происходит.Это только когда нет данных в потоке.Это заставляет меня поверить, что проблема в том, что GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA необходимо также установить на клиенте Android.Проблема заключается в моей жизни, я не могу найти, где установить эти настройки канала на gRPC Java.Может кто-нибудь указать мне, где я могу установить эти настройки канала?Там нет примеров, где они были установлены.