【问题标题】:Is it possible to use http4k to stream long reponses?是否可以使用 http4k 流式传输长响应?
【发布时间】:2025-11-28 12:35:01
【问题描述】:

我想使用 http4k 流式传输长响应。我打算使用Content-type: multipart/x-mixed-replace,所以我会无休止地将数据推送到客户端。在 http4k 中,我们有 typealias HttpHandler = (Request) -> Response。但是我的处理程序无法返回响应,因为它不是我要返回的有限文档,而是无穷无尽的流。这是否意味着我应该使用其他东西来满足我的需求?

【问题讨论】:

    标签: http4k


    【解决方案1】:

    如果您从另一个 HTTP 源提取,您可以在各种 HTTP 客户端模块之一上使用流式正文模式(Apache/OkHttp/Jetty 可以工作)。

    或者,如果您自己生成内容或从数据库流式传输,则必须启动一个线程并以这种方式处理它。在用于证明各种客户端可以进行流式传输的测试用例的源代码中,有一个如何做到这一点的示例。

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

    【讨论】:

    • 太棒了。它没有在test 中查找。我以为这只是关于测试。
    • 测试是为了证明库支持的特性是有效的,因此总是作为某种关于 API 的文档。 ? 没错,可能会有更多关于此的文档。将尝试在食谱中的示例中添加一些内容。
    • 这不是我想要的。我希望我的服务器能够流式传输。
    【解决方案2】:

    可能是你需要 websocket 吗?

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

    这样您就可以拥有无​​穷无尽的事件流(例如,您需要推送一个提要)。

    【讨论】:

    • 酷!他们正在增加这种可能性。
    最近更新 更多