使用 Gorilla Mux 端点通过 HTTP 流式传输数据

Using Gorilla Mux endpoint to stream data via HTTP

在我的 REST 端点上收到请求后,我想回复状态 200 和持续生成和刷新的数据主体(从数据库中获取并且可能非常大)。我正在寻找一种使用 Gorilla Mux 的有效方法,因为它已在整个项目中使用。

我看到 Labstack Echo, since it's ResponseWriter supports http.Flusher (interface 可以允许 HTTP 处理程序将缓冲数据刷新到客户端)。可惜gorilla的ResponseWriter好像不支持这个


问题:

不变量:

您可以在 gorilla/mux 中使用 Flush,因为它使用标准库中的 http.ResponseWriter 实现。您可以通过在您的处理程序中使用下面的代码来使用 Flush 方法

func YourHandler(w http.ResponseWriter, r *http.Request) {
    //SomeCode

    w.(http.Flusher).Flush()
}