【问题标题】:How to send message when Websocket opened on Webflux如何在 Webflux 上打开 Websocket 时发送消息
【发布时间】:2021-08-15 12:00:34
【问题描述】:

我创建了WebsocketHandler,正如Webflux websocket doc 中所示。

  @Override
  public Mono<Void> handle(WebSocketSession session) {
    Flux<String> messages = 
            session.receive()
                    .map(webSocketMessage -> "New message");
    return session.send(messages.map(session::textMessage));
  }

但问题是,我想在 websocket 连接打开后立即发送某种"Hello" 消息。我怎样才能做到这一点?

【问题讨论】:

    标签: java spring-boot websocket spring-webflux


    【解决方案1】:

    经过一番研究,我发现这可以通过 Flux 本身解决。我们将startWith 方法添加到Flux 就足够了。如startWith 方法的定义。

    在此 Flux 序列之前添加给定值。

    因此,我们将 Hello 消息添加到 Flux 的开头,它将首先发布。

      @Override
      public Mono<Void> handle(WebSocketSession session) {
        Flux<String> messages = 
                session.receive()
                        .map(webSocketMessage -> "New message")
                        .startWith("Hello");
        return session.send(messages.map(session::textMessage));
      }
    

    附:请记住,您还可以在前面加上 Publisher&lt;? extends T&gt; publisher,即 FluxMono,而不仅仅是简单的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-07
      相关资源
      最近更新 更多