Я пытался искать в api docs, а также в примерах, но не было ни одного примера, демонстрирующего, как отправлять пинги и получать пинги. Единственный пример - как подключиться к веб-сокету и отправить текст здесь . Я также видел пример чата здесь на стороне сервера, и я также тщательно следил за этим (т. Е. Установил интервал проверки связи в конфигурации на стороне сервера при установке WebSocket).
Я начинаю слушать обе стороны на понги, нони одна из сторон не получала никаких сообщений пинга.
И нет никакой возможности настроить клиентскую сторону для пингов, как вы можете видеть здесь .
Я такЯ не совсем понимаю, как отправлять пинги.
Это моя сторона сервера:
install(WebSockets)
{
pingPeriod = Duration.ofSeconds(20)
}
routing {
webSocket("/ws") {
for (frame in incoming)
{
when(frame)
{
is Frame.Pong ->
{
println("ping recieved")
}
is Frame.Ping ->
{
// just temporary block
println("ping recieved")
}
is Frame.Text ->
{
println(frame.readText())
}
}
}
}
}
Это моя сторона клиента:
val client = HttpClient {
install(WebSockets)
}
client.ws(
method = HttpMethod.Get,
host = "127.0.0.1",
port = 80,
path = "/ws"
) {
// pinger(outgoing, 20_000, 15_000)
send(Frame.Text("Hello World!"))
for (frame in incoming)
{
when (frame)
{
is Frame.Pong ->
{
println("ping received")
}
}
}
}
Я также нашел некоторые функции для этого здесь pinger
и ponger
, но теперь он говорит свою часть API и автоматически запускается с инициированием WebsocketSession, и я также пытался положить Pingerна стороне клиента, но это не отправляло ping на сервер.
В результате вышеприведенного кода просто Hello world
печатается в консоли сервера как отправленное со стороны клиента, но сообщения ping не принимаются.