服务器重新启动后,Jax-rs Sse 客户端重新连接

时间:2021-01-17 13:28:08

标签: java jax-rs server-sent-events

我正在创建一个基于 Jax-rs 服务器发送事件的项目。我有一个小问题。当服务器打开时,我的客户端应用程序 (Jax-rs SseEventSource) 工作正常,但是当我重新启动服务器(以模拟可能的错误)时,客户端将不再接收事件。我知道服务器何时重新启动客户端会关闭其连接,但我想知道的是如何在服务器再次启动时让我的客户端重新连接。我已经在客户端尝试过这个,但没有用。

public void consumeEvents() {
    WebTarget target = ClientBuilder
            .newClient()
            .target(URL);
    eventSource = SseEventSource.target(target).build();
    eventSource.register(eventConsumer, onError);
    eventSource.open();
}

private final Consumer<InboundSseEvent> eventConsumer =
        event -> {
            JsonObject jsonEvent = Json.createObjectBuilder()
                    .add("id", event.getId())
                    .add("data", event.readData())
                    .build();
            logger.info(jsonEvent.toString());
        };

private final Consumer<Throwable> onError =
        error -> {
            logger.error(error.getMessage(), error);
            logger.info("Trying to reconnect...");
            LockSupport.parkNanos(3_000_000_000L);
            eventSource.open();
        };

0 个答案:

没有答案