如何在 Webflux 上打开 Websocket 时发送消息
Posted
技术标签:
【中文标题】如何在 Webflux 上打开 Websocket 时发送消息【英文标题】:How to send message when Websocket opened on Webflux 【发布时间】: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"
消息。我怎样才能做到这一点?
【问题讨论】:
【参考方案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<? extends T> publisher
,即 Flux
或 Mono
,而不仅仅是简单的值。
【讨论】:
以上是关于如何在 Webflux 上打开 Websocket 时发送消息的主要内容,如果未能解决你的问题,请参考以下文章
Webflux,使用Websocket如何防止订阅两次反应式redis消息操作
如何将 Spring Webflux Websocket 路由作为注释?
Spring WebFlux 基础教程:WebSocket 使用