Я бы хотел, чтобы ktor начал возвращать мои данные, как только они станут доступны. Я попытался:
get ("/alphabet") {
val outgoingContent = object : OutgoingContent.WriteChannelContent() {
override val contentType: ContentType = ContentType.Text.Plain
override suspend fun writeTo(channel: ByteWriteChannel) {
println("Writing 1")
channel.write("ABCDEFGHIJKLMNOPQRSTUVWXYZ")
channel.flush()
delay(2000)
println("Writing 2")
channel.write("ABCDEFGHIJKLMNOPQRSTUVWXYZ")
channel.flush()
delay(2000)
println("Writing 3")
channel.write("ABCDEFGHIJKLMNOPQRSTUVWXYZ")
}
}
println("Responding...")
call.respond(outgoingContent)
println("Done")
}
, но вывод не начинается сразу, как я надеялся. (И я надеялся, что мне не понадобится flush()
.)
Я также пытался использовать OutgoingContent.ReadChannelContent
, но тоже не повезло.
Есть ли способ получить ktor для потоковой передачи данные ответа таким образом?