Маршрутизация веб-сокетов 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)

Попробуйте вывести на консоль идентификатор комнаты, чтобы отслеживать фактическое значение при каждом подключении.

Другие вопросы по тегам