在 Nestjs 中,我正在服务器和客户端之间创建 gRPC 双向流连接。
这是我的理解。 gRPC 流使用 HTTP/2,它将启动单个 TCP 连接并在其上复用多个流。当流关闭时,TCP 连接仍然打开,可以重用于将来的请求。
基于docs,我的gRPC服务器将像这样实现:
@GrpcStreamCall('StreamService', 'openStream')
async openStream(requestStream: ServerDuplexStream<Message, Message>) {
requestStream.on('close', async () => {
// This event is emitted when the stream is closed. Not when the TCP connection is closed.
});
}
因为当流关闭时会发出
close
事件。当 TCP 连接关闭/终止时不会。我想要一种方法来检测/处理客户端是否从服务器端终止 TCP 连接 如何?
你不能。 gRPC 不会向服务器应用程序公开连接信息。