客户端崩溃后无法重新连接到 gRPC 服务器

问题描述

我进行了大量研究,但无法找到解决 gRPC 问题的解决方案:

总结; 在我的 swift gRPC 客户端应用程序崩溃后,没有 gRPC 客户端可以再连接到我的 gRPC 服务器(请参阅下面的错误

我的设置: 我有一个 Swift 前端应用程序和一个 Rust 后端。 Rust 后端运行一个 gRPC 服务器(tonic)https://github.com/hyperium/tonic一个 Rust 客户端(也是 tonic)和一个 Swift 客户端(https://github.com/grpc/grpc-swift)可以连接到该服务器。 Swift 客户端崩溃后,所有客户端都无法再连接到服务器。

Rust 客户端报告: Error: Status { code: Cancelled,message: "h2 protocol error: protocol error: stream no longer needed" }

swift 客户端报告: StreamClosed(streamID: HTTP2StreamID(1),errorCode: HTTP2ErrorCode<0x8 Cancel>,location: ".../swift-nio-http2/Sources/NIOHTTP2/HTTP2StreamChannel.swift:820")

我的尝试 我在服务器中设置了 http2 keepalive,但没有任何作用。 我试图通过故意使 Rust 客户端崩溃来重现相同的效果 - 没有成功。

我什至不确定是查看 swift-grpc 和 tonic 库还是查看 grpc 本身(对我来说,服务器似乎是故意关闭流的)..
有谁知道我能做些什么来解决这个问题? 提前致谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)