Таргетинг, указанный c Соединения Micronaut WebSocket - PullRequest
0 голосов
/ 02 апреля 2020

Я пытаюсь создать службу Kotlin, которая может передавать данные из Kafka в (конкретное c) соединение WebSocket. Например, если данные от пользователя проходят через Kafka, программа получает их, и я хочу передать их правильному соединению WebSocket, если этот же пользователь в данный момент подключен.

Основы, которые у меня есть:

@KafkaListener()
@Controller
@Secured(SecurityRule.IS_ANONYMOUS)
@ServerWebSocket("/ws/{id}")
class WebSocket() {

    @OnOpen
    fun onOpen(session: WebSocketSession, id: String): Publisher<String> {
        return session.send("connection opened")
    }
}

Однако, если в том же классе я получаю сообщение Kafka, в котором содержится искомый идентификатор пользователя, как я могу передать это правильному соединению WebSocket?

Возможно, я подумал если я использую "/ws/{id}" из URL-адреса, я могу легко отправить его на правильный идентификатор, но я не могу понять, как.

Единственный известный мне способ отправки данных в соединение - это изнутри аннотированные функции websocket, такие как OnOpen и OnMessage et c. Кроме того, я нашел Micronaut WebSocketBroadcaster полезным, но, конечно, только для вещания.

И еще я пытаюсь выяснить, где убедиться, что идентификатор, к которому подключается, также является Фактический идентификатор пользователя, а не чей-либо другой, должен ли я реализовать это в аннотации @Secured?

...