我想了解如何處理keep-alive,尤其是服務器由於超時或使用單個套接字處理的請求的人爲限制而關閉保持活動連接時的「情況」。 我知道從關閉的套接字讀取將返回0.在這種情況下客戶端應該做什麼?它嘗試打開新的連接嗎?http keep-alive行爲 - 如何處理關閉的服務器套接字?
下面的測試代碼做定期執行HTTP請求:
while (true)
{
try
{
var httpResponse = await httpClient.GetAsync("https://192.168.1.22/api/v1/system/status/", cancellationToken);
if (httpResponse.IsSuccessStatusCode)
{
Console.Write(".");
}
}
catch (Exception ex)
{
Console.WriteLine("HttpClientGetStatus- Exception - " + ex.GetType() + " " + ex.Message);
}
Thread.Sleep(this.StatusFreq * 1000);
}
當套接字服務器關閉,我看不出有任何異常。這是否意味着當客戶端嘗試在內部打開一個新的套接字並且只要它工作,沒有任何事情(關於一箇舊的套接字被關閉,而是一個正在打開的新套接字)返回給用戶?我在哪裏可以找到規範或任何種類的描述正確http保持活動行爲的文章?
謝謝
我接受了答案。謝謝。爲了澄清,我是否正確理解當套接字關閉時,客戶端庫重試請求? –
@MosheShmukler是的,我認爲是 – fiddler