使用 Gorilla Mux 端点通过 HTTP 流式传输数据
Posted
技术标签:
【中文标题】使用 Gorilla Mux 端点通过 HTTP 流式传输数据【英文标题】:Using Gorilla Mux endpoint to stream data via HTTP 【发布时间】:2018-02-08 17:47:18 【问题描述】:在我的 REST 端点上收到请求后,我想回复状态 200
以及不断生成和刷新的数据主体(从数据库中获取并且可能非常大)。我正在寻找一种有效的方法来使用Gorilla Mux,因为它在整个项目中都被使用。
我看到Labstack Echo 是可能的,因为它是ResponseWriter
supports http.Flusher
(interface 允许 HTTP 处理程序将缓冲数据刷新到客户端)。不幸的是,大猩猩的ResponseWriter
似乎不支持这一点。
问题:
有没有办法让 Gorilla Mux 出现这种行为? 如果没有,我会很感激指向“最薄”方法的指针,否则可以实现此行为(我已经找到 Labstack Echo,但也许有更好的方法?)不变量:
我不能使用WebSockets
,应该将解决方案与 REST API 集成。
我无法将整个文件保存在服务器内存中。
【问题讨论】:
Gorilla 的多路复用器将 ResponseWriter 从服务器传递到应用程序。如果您的应用无法获取 http.Flusher,则会发生其他情况。 【参考方案1】:您可以在 gorilla/mux 中使用 Flush,因为它使用标准库中的 http.ResponseWriter
实现。您可以通过在处理程序中使用以下代码来使用Flush
方法
func YourHandler(w http.ResponseWriter, r *http.Request)
//SomeCode
w.(http.Flusher).Flush()
【讨论】:
我似乎忽略了这一点。谢谢,这解决了我的问题。以上是关于使用 Gorilla Mux 端点通过 HTTP 流式传输数据的主要内容,如果未能解决你的问题,请参考以下文章