java - 使用重新连接功能编写基于 WebFlux 的 SSE 客户端
问题描述
我正在使用 WebFlux 开发 SSE 客户端。我想要实现的是以某种方式设置客户端,即
- 如果 SSE 服务器暂时不可用,它会自动重新连接到 SSE 服务器
- 它也可以在运行时连接,以防 SSE 服务器从一开始就不存在。
但是,据我了解基于 JavaScript 的客户端,它们基本上能够满足(1)和(2)。
我的问题:有没有办法配置 WebFlux 客户端以显示所需的行为(1)和(2)(理想情况下,通过构建器和流畅的编码风格“以声明方式”)?- 我没有找到有关如何执行此操作的任何信息,但是,我认为这些是 SSE 客户端的标准要求。
这是我用于测试的基本代码:
final SslContext sslContext
= SslContextBuilder
.forClient()
.trustManager(InsecureTrustManagerFactory.INSTANCE)
.build();
final HttpClient httpClient
= HttpClient
.create()
.secure(t -> t.sslContext(sslContext));
final WebClient client
= WebClient
.builder()
.clientConnector(new ReactorClientHttpConnector(httpClient))
.build();
final ParameterizedTypeReference<ServerSentEvent<String>> type = new ParameterizedTypeReference<ServerSentEvent<String>>() {};
final Flux<ServerSentEvent<String>> eventStream
= client.get()
.uri(endpointURL)
.exchange()
.flatMapMany(it -> it.bodyToFlux(type))
.repeat();
eventStream
.subscribe(
this::updateInformation
, error -> LOGGER.error("Error - {}", error.getMessage())
, () -> LOGGER.info("Got event stream completion signal."));
解决方案
推荐阅读
- python - 在 SNMP 代理端动态增加 OID
- swift - 如何快速隐藏状态栏?
- python - “tensorflow/core/platform/posix/subprocess.cc:208] 无法启动 fork() 子进程:无法分配内存”
- javascript - 在javascript中将函数转换为类-“this”和私有函数的问题
- intellij-idea - 在其他项目中实现符号是否意味着去其源代码?
- .net - 无法在 Visual Studio 2017 中禁用 IOException 中断
- excel - 如何在睡前更新图像?
- android - 将数据从firebase加载到android recyclerview
- javascript - 导入.md文件错误渲染vue模板
- php - 磅号在发送的电子邮件中显示为“」”符号,标题元标记为 charset=utf-8