0
使用http.ResponseWriter
上传大量数据时,有什么方法可以测量客户端的下载速度吗?使用http.ResponseBody测量上传速度
上下文更新:我正在为块存储Blob的blob存储编写一个流式下载端点。这些文件非常大,因此加载和缓冲整个斑点是不可行的。能够监视缓冲区状态,写入或类似的字节可以更好地调度块下载。
E.g.当回应时,有没有办法检查有多少数据已经排队?
上下文的一个示例,但不使用文件对象。
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])
}
}
”将此循环的迭代速度调整为客户端的下载速度。“ --- tcp堆栈已经为你做好了。只需使用'io.Copy' – zerkms
@zerkms如果数据没有存储在本地,比如内容已经生成,那怎么能实现呢?数据生成器需要实现哪些接口? –
'io.Reader' ..... – zerkms