Утрачено клиентское соединение GRPC IOS - Цель C - PullRequest
1 голос
/ 22 июня 2019

Для приложения IOS соединение работает, но после того, как телефон некоторое время простаивает, соединение теряется, так как такие вызовы RPC зависают, без какого-либо ответа.

У меня была такая же проблема в JAVA, там я добавил DeadLine и перестроил канал, когда превысил Deadline, что-то вроде ниже.

stub.withDeadlineAfter(timeout, TimeUnit.MILLISECONDS).execute(input, new StreamObserver<AgentGuardStringResponse>() { ... }

Тогда при ошибке (крайний срок превышен)

mChannel.shutdown();

Это отлично работает.

Для объектива-c / ios

Я установил тайм-аут для вызовов RPC следующим образом:


  [call setTimeout:timeout];
  call.requestHeaders[@"sessionId"] = sessionId;
  [call start];

И попробуйте восстановить,

_serviceClient = [[AgentGuardService alloc] initWithHost:GRPCMetadata.shared.uri];

Похоже, это не работает, так как приложение некоторое время бездействует после запуска, и в конце концов запросы начинают проходить.

Любые указатели / руководства будут очень полезны.

Спасибо

...