用于新消息的ktor websocket侦听器



有没有一种方法可以在每次ktor websocket收到新消息时运行一些代码,有点像Android视图中的onTouchEvent?

目前,我检查新消息,并在while循环中处理它们,如下所示:

while (websocketIsOpen) {
val newMessage = session!!.incoming.receive()
processMessage(newMessage)
}

其中sessionDefaultClientWebsocketSession?,而processMessage是具有Frame作为参数的方法。

我更喜欢设置每次收到新消息时运行的代码,如下所示:

session!!.incoming.onNewMessage = { newMessage ->
processMessage(newMessage)
}

您可以使用传入帧通道的consumeEach方法在接收到帧时运行一些代码:

webSocket("/") {
incoming.consumeEach { frame ->
if (frame is Frame.Text) {
println("They say ${frame.readText()}")
}
}
}

最新更新