Маршрутизация веб-сокетов Ktor - использование параметра в качестве пути маршрута
Я использую Ktor для сервера websocket, где пользователи присоединяются к комнате с таким идентификатором комнаты:
wss: // url / room / {roomId}, где roomId - это отправляемый параметр. Проблема в том, что кажется, что все присоединяются к одной комнате независимо от значения {roomId}. Я следил за документацией здесь:https://ktor.io/docs/routing-in-ktor.html#route_parameter
Где они указывают:
get("/user/{login}") {
....
}
Я реализовал это как:
webSocket("/room/{roomId}") {
....
}
Но независимо от {roomId} все присоединяются к одной комнате. Я реализовал это неправильно? Я неправильно понимаю, как здесь работают параметры?
1 ответ
Вероятно, проблема где-то еще, потому что следующий код работает так, как вы ожидаете:
embeddedServer(CIO, port = 7777) {
install(WebSockets)
routing {
webSocket("/room/{roomId}") {
val roomId = call.parameters["roomId"]
outgoing.send(Frame.Text("You joined room #${roomId}"))
}
}
}.start(wait = true)
Попробуйте вывести на консоль идентификатор комнаты, чтобы отслеживать фактическое значение при каждом подключении.