【问题标题】:Using Gorilla Mux endpoint to stream data via HTTP使用 Gorilla Mux 端点通过 HTTP 流式传输数据
【发布时间】:2018-02-08 17:47:18
【问题描述】:

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

我看到Labstack Echo 是可能的,因为它是ResponseWriter supports http.Flusherinterface 允许 HTTP 处理程序将缓冲数据刷新到客户端)。不幸的是,大猩猩的ResponseWriter 似乎不支持这一点。


问题:

  • 有没有办法让 Gorilla Mux 出现这种行为?
  • 如果没有,我会很感激指向“最薄”方法的指针,否则可以实现此行为(我已经找到 Labstack Echo,但也许有更好的方法?)

不变量:

  • 我不能使用WebSockets,应该将解决方案与 REST API 集成。
  • 我无法将整个文件保存在服务器内存中。

【问题讨论】:

  • Gorilla 的多路复用器将 ResponseWriter 从服务器传递到应用程序。如果您的应用无法获取 http.Flusher,则会发生其他情况。

标签: rest go endpoint flush mux


【解决方案1】:

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

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

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

【讨论】:

  • 我似乎忽略了这一点。谢谢,这解决了我的问题。
猜你喜欢
  • 1970-01-01
  • 2017-06-19
  • 1970-01-01
  • 2018-03-06
  • 2010-09-25
  • 1970-01-01
  • 2020-11-10
  • 2012-12-01
  • 2012-03-30
相关资源
最近更新 更多