p-6ren">
gpt4 book ai didi

Spring WebFlux 检测客户端断开连接

转载 作者:行者123 更新时间:2023-12-04 12:39:19 25 4
gpt4 key购买 nike

假设以下 @RestController :

@GetMapping("listen")
public Flux<Object> listen() {
return Flux.create(sink -> process(sink));
}

某处
sink.next(new Object());

此代码没有关于接收器状态或完成的信息

尝试使用 isCanceled ,每次都返回false。

是否可以检测到是 FluxSink客户端还在使用吗?

最佳答案

在 spring-webflux 中,如果客户端关闭连接,订阅将被取消和处理。
如果在 process 方法中添加回调 onCancel 和 onDispose,您将看到。

private <T> void process(final FluxSink<T> sink) {
sink.onCancel(new Disposable() {
@Override
public void dispose() {
System.out.println("Flux Canceled");
}
});

sink.onDispose(new Disposable() {

@Override
public void dispose() {
System.out.println("Flux dispose");
}
});
}

然后向您的端点发送一个 http 请求并在您的流量完成之前取消它。您将看到两个回调都被触发。

关于Spring WebFlux 检测客户端断开连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57928856/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com