我想了解应该如何处理保持活动状态,特别是服务器由于超时或使用单个套接字处理的请求的人为限制而关闭保持活动状态连接的“情况”。我知道从关闭的套接字读取将返回0。在这种情况下,客户端应该怎么办?它是否尝试打开新连接?
下面的测试代码确实定期执行超文本传输协议请求:
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持久连接在这篇维基百科文章中有详细解释。
然而,在您的情况下,您不必担心套接字管理,因为.NETHTTPClient库处理(并隐藏)所有这些低级内容。这就是为什么在套接字重用方面没有任何异常。
我在哪里可以找到规范或任何类型,或者描述正确超文本传输协议保持活力行为的文章?
RFC2616第8.1节讨论了持久连接,尤其是第8.1.4节“实际考虑”与您的问题相关。引用:
客户端、服务器或代理可以随时关闭传输连接。。。客户端、服务器和代理必须能够从异步关闭事件中恢复。只要请求序列是幂等的,客户端软件就应该重新打开传输连接,并在没有用户交互的情况下重新传输中止的请求序列(见第9.1.2节)。。。
换句话说:如果客户端在发送请求之前检测到服务器端关闭,那么它应该为下一个请求打开一个新连接。如果在发送请求期间检测到关闭,则应仅针对幂等请求使用新连接重新启动。
httpd是Apache超文本传输协议(HTTP)服务器的主程序。被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池。 通常,httpd不应该被直接调用,而应该在类Unix系统中由apachectl调用,在Windows NT/2000/XP/2003中作为服务运行和在Windows 95/98/ME中作为控制台程序运行. 语法 httpd [ -d serverroot ]
我只是有一个关于服务中http请求的结构和处理响应的问题。我正在使用Angular2。alpha46 Typescript(刚刚开始测试-我喜欢它…Ps…。感谢所有一直致力于它并通过github作出贡献的人) 因此,采取以下措施: 登录表单。组成部分ts 从这个组件中,我导入了我的userService,它将容纳我的超文本传输协议请求,以登录用户。 使用者服务ts 我想做的是能够处理http请求之
我正在从我的角UI调用Spring引导REST服务。只要Spring Boot Rest服务作为Spring Boot应用程序执行,它就运行良好。但是一旦我将其转换为WAR文件并部署在Jboss 6.2.4服务器上,我就会得到404。我看到来自UI的REST服务调用成功,但请求JSON没有通过。在请求JSON上,我正在传递2个字符串和一个上传的excel文件。 这是我的angular UI htt
我想测试一个连接到Github api的应用程序,下载一些记录并对其进行处理。我想要一个模拟对象,我做了如下操作: 看起来不错吧?我应该在thenReturn中输入什么(它需要HttpResponse,但我不知道如何创建)。谢谢你的回答。如果你有更好的想法,我将不胜感激。 更新:字符串响应是一个示例响应
我有以下伪代码 我想要的是,我循环遍历一个对象数组,每个对象都获得相关的用户和产品,然后订阅用户和产品。我怎么能那样做?
由于我正在构建一个服务器,它应该同时运行许多连接,我试图使效率,而不是让任何幽灵连接打开。 在这里,我实现了一个“keep alive”方法,我的问题如下:如果我的服务器中打开了600个打开的连接,显然服务器需要时间在所有线程之间运行以检查keep alive,甚至从客户机获得keep alive消息-检查是否发送了keep alive消息的适当时间应该是多少。我想大约2分钟--所以服务器想要忙,