GRPC IOS客户端连接丢失-目标C

GRPC IOS客户端连接丢失-目标C,ios,objective-c,react-native,grpc,grpc-java,Ios,Objective C,React Native,Grpc,Grpc Java,对于IOS应用程序,连接正常,但在手机闲置一段时间后,连接会丢失,例如RPC呼叫挂起,没有任何响应 我在JAVA中也遇到了同样的问题,在JAVA中我添加了一个截止日期,并在超过截止日期时重建了通道,如下所示 stub.withDeadlineAfter(timeout, TimeUnit.MILLISECONDS).execute(input, new StreamObserver<AgentGuardStringResponse>() { ... } 这个很好用 目标-c/ios

对于IOS应用程序,连接正常,但在手机闲置一段时间后,连接会丢失,例如RPC呼叫挂起,没有任何响应

我在JAVA中也遇到了同样的问题,在JAVA中我添加了一个截止日期,并在超过截止日期时重建了通道,如下所示

stub.withDeadlineAfter(timeout, TimeUnit.MILLISECONDS).execute(input, new StreamObserver<AgentGuardStringResponse>() { ... }
这个很好用

目标-c/ios

我也为RPC调用设置了一个超时

  
  [call setTimeout:timeout];
  call.requestHeaders[@"sessionId"] = sessionId;
  [call start];
努力重建,

_serviceClient = [[AgentGuardService alloc] initWithHost:GRPCMetadata.shared.uri];
这似乎不起作用,因为应用程序在启动后会闲置一段时间,最终请求开始通过

任何指针/指南都将非常有用


谢谢

您使用的是哪个版本?这在旧版本的gRPC中是一个问题,但最近,随着gRPC在网络层改用苹果的API,这个问题应该会好得多。如果您在v1.21或之后的版本中遇到这种情况,您可能会想到一个复制版本,并且最终我通过将
setKeepaliveWithInterval
设置为
[grpcall setKeepaliveWithInterval:10000 timeout:10000 forHost:GRPCMetadata.shared.uri];解决了这个问题您使用的是哪个版本?这在旧版本的gRPC中是一个问题,但最近,随着gRPC在网络层改用苹果的API,这个问题应该会好得多。如果您在v1.21或之后的版本中遇到这种情况,您可能会想到一个复制版本,并且最终我通过将
setKeepaliveWithInterval
设置为
[grpcall setKeepaliveWithInterval:10000 timeout:10000 forHost:GRPCMetadata.shared.uri];解决了这个问题
_serviceClient = [[AgentGuardService alloc] initWithHost:GRPCMetadata.shared.uri];