首頁 > 後端開發 > Golang > 為什麼我的 Go HTTP Server 在延遲後才會傳送分塊數據,如何將 Content-Length 設為 0?

為什麼我的 Go HTTP Server 在延遲後才會傳送分塊數據,如何將 Content-Length 設為 0?

Barbara Streisand
發布: 2024-12-04 08:12:13
原創
426 人瀏覽過

Why Does My Go HTTP Server Only Send Chunked Data After a Delay, and How Can I Set Content-Length to 0?

來自Go 伺服器的連續分塊HTTP 回應

為了建立一個連續傳輸資料區塊的Go HTTP 伺服器,您已經遇到了挑戰。您的用戶端不會如預期每秒接收資料區塊,而是僅在 5 秒的持續時間後收到完整的回應。此外,您希望在傳輸結束時將 Content-Length 標頭傳送為 0。

要解決此問題,必須將 Flusher 介面整合到伺服器實作中。這是程式碼的修改版本:

透過在寫入每個區塊後呼叫 Flusher.Flush(),您可以觸發「分塊」編碼並傳送單獨的區塊。這可確保用戶端在資料可用時接收資料。

驗證此行為可以透過 telnet 實現,如下所示:

此修改後的程式碼可以傳送連續分塊 HTTP 回應來自你的 Go 伺服器。請記住驗證您的 ResponseWriter 是否支援跨多個 goroutine 的並發訪問,以獲得最佳性能。

以上是為什麼我的 Go HTTP Server 在延遲後才會傳送分塊數據,如何將 Content-Length 設為 0?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板