我观察到HTTP 1.1 Server实现,一旦检测到其传出通道的客户端连接关闭(或者更确切地说,在发送正确的http响应之前或之后),就会终止客户端连接。这是一个符合HTTP 1.1的实现吗?
RFC 2616第8.1.4节似乎暗示这是正确的行为:
当客户端或服务器希望超时时,应该发出优雅的内容 关闭运输连接。客户端和服务器应该都是 不断地关注运输的另一边,并且 在适当的时候回应。
...
服务器不应在传输响应的过程中关闭连接,除非怀疑网络或客户端故障。
我能解释一下吗?在HTTP 1.1的上下文中是否有关于半封闭连接处理的更明确的引用?
答案 0 :(得分:1)
据我所知,这就是我们需要了解的半封闭连接。
如果服务器检测到客户端关闭了它(它可以在服务器即将写入套接字时),或者在请求结束时,如果它不支持{{1} }。
客户端可以随时断开连接,但它应告诉服务器为什么断开连接(time_out,请求取消)。但是那些编写套接字组件的人并没有使用它。当他们需要强制connection: keep-alive
时,他们只需关闭套接字。
但客户端实现不是问题。您应该担心服务器实现,因为这些意外断开会遭受很多损失。
修改强>
也许这些链接可以帮到你。