Можно ли использовать http4k для потоковой передачи длинных ответов?

Я хотел бы использовать http4k для потоковой передачи длинного ответа. Я планирую использоватьContent-type: multipart/x-mixed-replaceпоэтому я отправляю данные клиенту бесконечно. В http4k у нас естьtypealias HttpHandler = (Request) -> Response. Но мой обработчик не может вернуть ответ, потому что это не ограниченный документ, который я хочу вернуть, а бесконечный поток. Означает ли это, что я должен использовать что-то еще для того, что хочу?

2 ответа

Если вы используете другой HTTP-источник, вы можете использовать режим потоковой передачи основного текста в одном из различных клиентских модулей HTTP (Apache/OkHttp/Jetty будет работать).

В качестве альтернативы, если вы сами генерируете контент или выполняете потоковую передачу из базы данных, вам придется запустить поток и обрабатывать его таким образом. В исходном коде тестового примера есть пример того, как это сделать, чтобы доказать, что различные клиенты могут выполнять потоковую передачу.

https://github.com/http4k/http4k/blob/master/http4k-core/src/test/kotlin/org/http4k/streaming/StreamingContract.kt

Может быть, этот веб-сокет - это то, что вам нужно?

https://www.http4k.org/blog/typesafe_websockets/

Таким образом, вы можете иметь бесконечный поток событий (например, вам нужно отправить ленту).

Другие вопросы по тегам