Если вопрос «поставляется ли http4k со всей платформой распределенных сообщений», то ответ - нет :). Однако, если вы просто хотите иметь единый узел обмена сообщениями, который отслеживает все сообщения и подключенные веб-сокеты в памяти, это довольно просто сделать.
Этот код взят из демонстрационного проекта http4k , который реализует чат-сервер в 30 строках Kotlin:
fun IrcApp(): PolyHandler {
val userCounter = AtomicInteger()
val participants = ConcurrentHashMap<String, Websocket>()
fun newConnection(ws: Websocket) {
val id = "user${userCounter.incrementAndGet()}"
participants += id to ws
ws.onMessage { new ->
participants.values
.filterNot { it == ws }
.forEach { it.send(WsMessage("$id: ${new.bodyString()}")) }
}
ws.onClose {
participants -= id
}
}
return PolyHandler(
static(ResourceLoader.Classpath()),
websockets("/ws" bind ::newConnection)
)
}