以下是表示服务器端流式传输的伪代码:
@Override
public void someMethod(XXRequest request, StreamObserver<XXEvent> responseObserver) {
try {
while (!Context.current().isCancelled()) {
XXEvent event = heavyCompute();
if (event != null) {
responseObserver.onNext(event);
}
}
} finally {
doClean();
}
}
在客户端,如果一切正常,CancelableableContext.cancel()或ManagedChannel.shutdownNow()将优雅地终止someMethod调用,但是如果客户端崩溃,则someMethod调用将永远运行...
有没有办法解决这个问题?
谢谢。