我想了解,如果取决于客户端如何配置 http 连接,服务器可以以非持久方式或持久方式运行,因此实际上某些客户端可以以持久模式连接,而某些客户端可以以非持久模式连接。
任何示例代码,尤其是 Java 代码,都会有帮助。
答案1
这取决于协议版本:
HTTP/1.0
(对于我们当中的长者来说)。除非另有规定,否则连接将立即关闭。为了保持连接处于活动状态,客户端可以Connection: keep-alive
向请求添加标头。如果服务器支持并同意,则连接保持活动状态。如果任何一方不再希望保持连接(例如,客户端不再添加所述标头,或添加Connection: close
),则请求完成后连接将关闭。
HTTP/1.1
这里默认是保持连接打开,除非另有明确声明(Connection: close
)。但是,服务器可能会决定在某个不活动超时(例如 5 秒)后关闭连接。不过,你永远不能力量服务器保持连接,但每 4 秒发出一次虚拟请求可能工作 - 但这实际上应该是一个几乎不会对服务器造成任何负载的请求,并且作为服务器管理员,我甚至会被日志文件中的许多讨厌的行所困扰。
我不会深入研究 HTTP/2,因为多路复用和服务推送选项使情况变得有点复杂。