有没有一种方法可以在每次ktor websocket收到新消息时运行一些代码,有点像Android视图中的onTouchEvent?
目前,我检查新消息,并在while循环中处理它们,如下所示:
while (websocketIsOpen) {
val newMessage = session!!.incoming.receive()
processMessage(newMessage)
}
其中session
是DefaultClientWebsocketSession?
,而processMessage
是具有Frame
作为参数的方法。
我更喜欢设置每次收到新消息时运行的代码,如下所示:
session!!.incoming.onNewMessage = { newMessage ->
processMessage(newMessage)
}
您可以使用传入帧通道的consumeEach
方法在接收到帧时运行一些代码:
webSocket("/") {
incoming.consumeEach { frame ->
if (frame is Frame.Text) {
println("They say ${frame.readText()}")
}
}
}