使用http.ResponseWriter
上传大量数据时,有没有办法衡量客户端的下载速度?
上下文更新:我正在为blob存储编写流式下载端点,它以块的形式存储blob。文件非常大,因此加载和缓冲整个blob是不可行的。能够监视缓冲区状态,写入的字节或类似内容将允许更好地安排块下载。
E.g。当Write()
响应时,有没有办法检查已排队的数据量?
上下文的一个示例,但不使用文件对象。
func downloadHandler(w http.ResponseWriter, req *http.Request, ps httprouter.Params) {
// Open some file.
f := os.Open("somefile.txt")
// Adjust the iteration speed of this loop to the client's download speed.
for
{
data := make([]byte, 1000)
count, err := f.Read(data)
if err != nil {
log.Fatal(err)
}
if count == 0 {
break
}
// Upload data chunk to client.
w.Write(data[:count])
}
}
答案 0 :(得分:2)
您可以实现一个自定义http.ResponseWriter
来衡量发送的字节数,并计算吞吐量。
有可能包已经做过类似的事情了。 Google发现this one(我还没有使用过)。