使用重新连接功能对基于WebFlux的SSE客户端进行编程

时间:2019-03-14 06:34:38

标签: java client flux spring-webflux server-sent-events

我正在使用WebFlux开发SSE客户端。我要实现的是以某种方式设置客户端

  1. 如果SSE服务器暂时不可用,它将自动重新连接到SSE服务器
  2. 它也可以在运行时连接,以防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."));

0 个答案:

没有答案