Я пытаюсь создать службу 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?