1

我做了很多研究,但找不到解决 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" }

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

我尝试过在服务器中 设置了一个http2 keepalive,但这并没有做任何事情。我试图通过故意使 rust 客户端崩溃来重现相同的效果——但没有成功。

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

4

0 回答 0