【发布时间】:2022-07-07 21:30:27
【问题描述】:
我正在使用 ktor websocket 模块 当我向客户端发送数据时,发送后如何从客户端取回数据?
val result = serverSession.send(json)
// result
就这样
其实就是Unit类型 但我想得到字符串
【问题讨论】:
-
我应该使用计时器来等待结果吗? :(
我正在使用 ktor websocket 模块 当我向客户端发送数据时,发送后如何从客户端取回数据?
val result = serverSession.send(json)
// result
就这样
其实就是Unit类型 但我想得到字符串
【问题讨论】:
Ktor官网有很好的例子。
如果您是服务器端,请查看此链接 (https://ktor.io/docs/websocket.html#handle-single-session) 和以下示例。
webSocket("/echo") {
send("Please enter your name")
for (frame in incoming) {
when (frame) {
is Frame.Text -> {
val receivedText = frame.readText()
if (receivedText.equals("bye", ignoreCase = true)) {
close(CloseReason(CloseReason.Codes.NORMAL, "Client said BYE"))
} else {
send(Frame.Text("Hi, $receivedText!"))
}
}
}
}
}
如果您是客户端,请查看此链接 (https://ktor.io/docs/websocket-client.html#example) 和以下示例。
client.webSocket(method = HttpMethod.Get, host = "127.0.0.1", port = 8080, path = "/echo") {
while(true) {
val othersMessage = incoming.receive() as? Frame.Text
println(othersMessage?.readText())
val myMessage = Scanner(System.`in`).next()
if(myMessage != null) {
send(myMessage)
}
}
}
【讨论】: