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