サーバーからファイルをダウンロードしてユーザーに返すプログラムでは、接続の整合性を維持することが重要です。ユーザーがダウンロードを停止するか接続を終了すると、GET 接続も終了する必要があります。ただし、使用状況グラフから確認できるように、これは発生していません。
この問題を解決するには、あらゆる状況でリクエストの本文を閉じることが不可欠です。その方法は次のとおりです。
<code class="go">resp, httpErr := http.Get(url.String()) if httpErr != nil { // Handle error return } // If there's no error, defer the call for closing the body defer resp.Body.Close()</code>
ボディのクローズを延期すると、エラーが発生した場合でもボディが確実に実行されます。さらに、io.Copy は、コピー操作の成功に関する情報を提供します。これは、次のコードを使用して確認できます。
<code class="go">written, err := io.Copy(w, resp.Body) if err != nil { // Copy did not succeed }</code>
接続を正常に閉じて io.Copy の結果を確認することで、ユーザーがダウンロードまたは接続を閉じたときに HTTP 接続が終了していることを確認できます。 .
以上が質疑応答形式に適したタイトルのオプションをいくつか示します。 * **ユーザーがダウンロードを終了しても Go HTTP 接続が閉じないのはなぜですか?** * **HTTP Connecti を正常に閉じるにはどうすればよいですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。