我想了解如何处理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