0

我有一个从 nginx 获取视频文件的 golang 网络服务器。<video>当我直接从html5 标签调用 nginx 视频时,视频播放流畅,渐进式下载。通过渐进式下载,我的意思是随机搜索无需任何特殊的播放器逻辑即可工作。

但是,当我通过 golang 网络服务器调用它时,该服务器又使用 golang NewSingleHostReverseProxy() 类调用 nginx 链接,渐进式下载不起作用。

是否可以使用 golang 反向代理启用渐进式下载?

golang webserver中反向代理的代码:

url, _ := url.Parse("http://nginx-server/")
proxy := httputil.NewSingleHostReverseProxy(url)
router.PathPrefix("/video").HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        proxy.ServeHTTP(w, r)
})
4

1 回答 1

1

我相信你只需要将 FlushInterval 设置为负数

FlushInterval 指定在复制响应正文时刷新到客户端的刷新间隔。如果为零,则不进行定期刷新。负值意味着在每次写入客户端后立即刷新。当 ReverseProxy 将响应识别为流式响应时,或者如果其 ContentLength 为 -1,则忽略 FlushInterval;对于此类响应,写入会立即刷新到客户端。

proxy := httputil.NewSingleHostReverseProxy(url)
proxy.FlushInterval = -1
于 2021-04-01T23:15:21.627 回答