如何使 spring webflux websocket 与 kotlin 协程一起工作?

问题描述 投票:0回答:1

如何使 spring webflux websocket 与 kotlin 协程一起工作?

我有以下代码片段:

val client = ReactorNettyWebSocketClient()
val uri = URI.create("wss://websocket")

client.execute(uri) { session ->
    val handler = WebSocketImplementation(session)
    session.receive()
        .doOnNext { message ->
                handler.handleTextMessage(message) //this is a suspend function
        }
        .then()
}.block()

handleTextMessage 调用的一些方法是协程。虽然我可以使用 Reactor 重写它们,但我非常喜欢协程。有没有办法可以无缝地实现这种过渡?我已经在代码的其他部分做了,例如:

session.send(Mono.just(textMessage)).awaitFirstOrNull()

但无法使上面的代码片段与它一起工作

spring spring-boot kotlin kotlin-coroutines
1个回答
0
投票

您可以将通量转换为流量,s.t. flow.onEach() 调用将需要暂停乐趣。

session.receive().asFlow().onEach {
        suspend { println(it) }
    }
© www.soinside.com 2019 - 2024. All rights reserved.