Почему Publisher (Mono) игнорирует блок кода? - PullRequest
0 голосов
/ 08 апреля 2019

Я подключаюсь к twitch irc, используя реакторную сетку.

@Bean
    public Mono<Void> wsClient() {

        return new ReactorNettyWebSocketClient()
            .execute(URI.create("wss://irc-ws.chat.twitch.tv:443"), handler);
    }

Часть 1 и 2 выполняются, но часть 3 всегда игнорируется

        @Override
    public Mono<Void> handle(WebSocketSession webSocketSession) {

        System.out.println("handle");

        //Part 1
        Mono<Void> handler = webSocketSession.send(Flux.fromArray(new WebSocketMessage[]{
            webSocketSession.textMessage("PASS " + token),
            webSocketSession.textMessage("NICK euclibot")}));

        //Part 2
        Mono<Void> chatHandler = handler.and(webSocketSession.send(webSocketSession.receive()
            .map(WebSocketMessage::getPayloadAsText)
            .map(this::executeCommand)
            .map(webSocketSession::textMessage)));

        //Part 3
        return chatHandler.and(webSocketSession.send(Flux.interval(Duration.ofSeconds(30))
            .flatMap(interval -> chat.newChannels())
            .map(webSocketSession::textMessage)));
    }

И это не изменится, даже если я поменяю местами части 2 и 3, часть 3всегда игнорирую.

Я на 100% уверен, что это глупая ошибка, которую я упускаю из виду.

...