【发布时间】:2021-02-04 14:48:57
【问题描述】:
我在 Android 应用程序上使用 grpc-okhttp 对后端进行 RPC 调用。
这是客户端保活配置:
.keepAliveTime(2, TimeUnit.SECONDS)
.keepAliveTimeout(5, TimeUnit.SECONDS)
.keepAliveWithoutCalls(true)
我观察到连接在某些时候断开但在应用重新启动之前从未恢复的情况。
我还没有找到一种方法来始终如一地重现它,但在生产中我看到很多错误“不可用:保持连接失败。连接可能已经消失”。
根据我的理解,gRPC 应该自动重新连接,但看起来一旦保持活动失败一次,它甚至都不会费心重新连接 - 后续请求会立即失败,甚至不需要等待截止日期或保持活动超时。
【问题讨论】:
-
你试过
AndroidChannelBuilder吗?它在 Android 上具有更好的网络监控功能,可以更快地响应网络变化。 -
我没有。看起来很有希望。会试一试。谢谢!
-
@voidzcy 如果您发布答案,我会将其标记为已接受。
-
当然,很高兴听到我的建议有帮助。