【问题标题】:ktor websocket listener for new message用于新消息的 ktor websocket 侦听器
【发布时间】:2021-03-15 14:13:02
【问题描述】:

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

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

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

    processMessage(newMessage)
}

其中sessionDefaultClientWebsocketSession?processMessage 是一个以Frame 为参数的方法。

我希望设置在每次收到新消息时运行的代码,如下所示:

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

【问题讨论】:

    标签: ktor


    【解决方案1】:

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

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

    【讨论】:

    • 太好了,这正是我想要的!谢谢!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-04
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-19
    相关资源
    最近更新 更多