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

时间:2021-05-30 08:02:58

标签: swift rust grpc grpc-swift rust-tonic

我进行了大量研究,但无法找到解决 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 本身(对我来说,服务器似乎是故意关闭流的)..
有谁知道我能做些什么来解决这个问题? 提前致谢!

0 个答案:

没有答案