Возврат потокового контента с ктора - PullRequest
0 голосов
/ 26 апреля 2020

Я бы хотел, чтобы 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 для потоковой передачи данные ответа таким образом?

...