Библиотека Ktor-websocket ничего не делает при попытке получить данные на клиенте
В настоящее время я пытаюсь подключить наш мультиплатформенный проект Kotlin к веб-сокетам. Я хотел бы использовать библиотеку ktor-websockets для получения обновлений от нашего бэкэнда, но, к сожалению, когда я запускаю этот код, ничего не происходит:
client.webSocket(
port = 80,
method = HttpMethod.Get,
host = "https://uat-betws.sts.pl",
path = "/ticket?token=eyJzdWIiOiI0ZmY5Y2E1Mi02ZmEwLTRiYWYtODlhYS0wODM1NGE2MTU0YjYiLCJpYXQiOjE2MTk4MDAwNzgsImV4cCI6MTYxOTgwMzY3OH0.oIaXH-nFDpMklp4FSJWMtsM7ECSIfuNF99tTQxiEALM"
)
{
for (message in incoming) {
message as? Frame.Text ?: continue
val receivedText = message.readText()
println(receivedText)
}
// Consume all incoming websockets on this url
this.incoming.consumeAsFlow().collect {
logger.d("Received ticket status websocket of type ${it.frameType.name}")
if (it is Frame.Text) {
Json.decodeFromString<TicketStatusResponse>(it.readText())
}
}
}
Есть ли у кого-нибудь опыт работы с библиотекой ktor-websockets? Документации почти нет, так что, возможно, я что-то делаю не так. Спасибо
1 ответ
Как говорится в документации
Ktor provides Websocket client support for the following engines: CIO, OkHttp, Js.
Это означает, что он работает только на JVM / JS, вы, вероятно, ориентируетесь на iOS. Пока не поддерживается, вы можете следить за выпуском KTOR-363 за обновлениями.
Конечно, команда работает над этим, но пока вам нужно было реализовать это самостоятельно, используя expect / actual, вы можете проверить официальный пример