gRPC Java:如何知道客户端是否突然中断(服务器端)?

问题描述:

服务gRPC客户端时,我的服务器在客户端断开连接时分配我想要释放它们的资源。gRPC Java:如何知道客户端是否突然中断(服务器端)?

我的问题是:如何正确处理客户端突然断开的情况?

+0

如果断开是在向响应写入数据时发生的,那么Web容器将抛出一个特定的IOException,例如tomcat将抛出一个'org.apache.catalina.connector.ClientAbortException'。 – MartinByers

+0

@MartinByers:哦,我的坏!非常感谢你解决这个问题。 – anhldbk

这通常不是问题,因为服务器API基于RPC而不是传输。例如,您无法分配特定于连接的资源,因为连接不会公开给您。

不建立连接资源决定是一个好主意,因为当代理卷入时它会崩溃。例如,如果您的gRPC服务器前有TLS终止代理,则所有连接看起来都来自同一个“客户端”,即使实际上它们不是。

注意:有些方法可以近似连接(通过查看客户端的套接字地址),但是无法知道连接何时消失。地址纯粹是信息性的。