保持活动状态并请求超时

本文关键字:请求 超时 活动状态 | 更新日期: 2023-09-27 18:27:01

我知道keep-alive消息的目的是防止底层TCP连接关闭,以便可以通过同一TCP连接发送多个请求。

然而,目前尚不清楚这对超时请求的影响:

  • 如果在同一个TCP连接上处理多个请求,当客户端超时时,ASP.NET如何知道?我不知道如何正确地问这个问题,但我怀疑如果底层TCP连接关闭,HttpWorkerRequest.IsClientConnected是错误的?如何确定客户端是否超时?肯定不能再发送回复了吗
  • 既然客户端可以发送keep-alive消息,那么它对请求有什么影响(如果有的话)?我预计它不会有任何效果,超时等机制将照常工作

感谢您的时间和帮助。

保持活动状态并请求超时

HTTP保持活动(不应与TCP保持活动混淆)要求服务器在HTTP响应完全发送后不要关闭连接。因此,HTTP保持活动仅与发送HTTP响应之后和接收下一个HTTP请求之前的时间相关。

当客户端超时时,ASP.NET如何知道?

服务器正在尝试读取数据。如果客户端关闭连接,服务器将收到通知(如读取0字节),并将关闭连接。

肯定不能再发送回复了吗?

重复一遍,HTTP保持活动只有在发送完整响应之后才相关。所以这个问题与HTTP保持活动无关。

既然客户端可以发送保活消息,那么它对请求有什么影响(如果有的话)?

对当前请求没有影响。但是客户端必须意识到,在发送HTTP响应之后、服务器收到新请求之前,服务器可能随时关闭连接。因此,服务器可能恰好在客户端尝试发送新请求的时刻关闭连接。在这种情况下,客户端必须在新连接中重试幂等请求(GET),而其他请求应该失败。