Akka WebSocket server. Как получить url клиента

Потихоньку изучаю akka. Появился вопрос: как мне получить информацию о клиенте, который подключается к сокету? Имею ввиду следующее: когда я на клиенте подключаюсь к сокету, то в url этого сокета я могу указать некоторые данные. Что-то вроде id клиента, его система(iOS/Android/Web) и так далее. Для примера: ws://localhost:8080/ws?as=iOS&id=123

Мой код:

fun main() {
    val system = ActorSystem.create("system")
    val materializer = Materializer.createMaterializer(system)
    val connectionsController = system.actorOf(Props.create(ConnectionsController::class.java))

    val http = Http.get(system)

    val routeFlow = path("ws") {
        handleWebSocketMessages(mainFlow(connectionsController))
    }.flow(system, materializer)

    http.bindAndHandle(routeFlow, ConnectHttp.toHost("0.0.0.0", 8080), materializer).thenRun {
        println("Web socket server is running at : localhost:8080")
    }
}

fun mainFlow(connectionsController: ActorRef): Flow<Message, Message, NotUsed> {
    val source = Source.actorRef<Message>(
        { Optional.empty() },
        { Optional.empty() },
        100,
        OverflowStrategy.dropNew())
        .mapMaterializedValue {
            println("A user connected")
            NotUsed.getInstance()
        }

    val sink: Sink<Message, NotUsed> = Flow.create<Message>()
        .map {
            println("A Message received")
//            println(it.asTextMessage().strictText)
        }
        .to(Sink.onComplete {
            println("A user disconnected")
        })


    return Flow.fromSinkAndSource(sink, source)
}

Ответы (1 шт):

Автор решения: benifest
val routeFlow = path("ws") {
    get {
        parameter("as") { sys ->
            parameter("id") { id ->
                parameter("v") { v ->
                    handleWebSocketMessages(mainFlow(connectionsController, sys, id, v))
                }
            }
        }
    }
}.flow(system, materializer)

ws://localhost:8080/ws?as=iOS&id=123&v=123

→ Ссылка