为什么Publisher(Mono)忽略代码块?

时间:2019-04-08 11:57:28

标签: java spring-boot asynchronous project-reactor java-websocket

我正在使用电抗器websocket连接到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%确信这是我忽略的愚蠢错误。

0 个答案:

没有答案