如何在HTTP2中保持长连接?

时间:2019-11-12 12:53:39

标签: http2

我正在阅读Alexa语音服务功能的文档,并且涉及到管理HTTP2连接的部分。我不太了解这个下行通道在后台如何工作。使用服务器推送吗?好吧,服务器推送可以用来保持长时间连接吗?还是只是使用一些技巧来使连接保持很长一段时间?

如文档中所述,客户端需要与服务器建立下行通道流。

enter image description here

根据我在这里读到的内容https://tools.ietf.org/html/rfc7540,从此状态图:

enter image description here

一旦流发送HEADER帧,后接END STREAM标志,则从客户端的角度来看,该状态将为半封闭(本地)。因此,这就是设备半关闭状态的发生方式,如上图所示。纠正我,如果我错了。

这就是说要管理HTTP连接。

enter image description here

根据我的理解:客户端为GET请求设置了60分钟的超时。发送请求后,服务器将不发送任何响应。然后,连接将保持打开状态60分钟。但是,一旦从服务器发送了响应,就应该关闭连接。那不是应该发生吗?还是因为服务器通过下行通道流发送响应时,它没有发送END STREAM标志,所以该流不会关闭?

1 个答案:

答案 0 :(得分:1)

  

但是一旦服务器发送了响应,就应该关闭连接。

HTTP / 1.1和HTTP / 2使用持久连接,这意味着单个连接不仅可以用于一个请求/响应,还可以用于多个请求/响应周期。

只有HTTP / 1.0在响应后关闭连接,因此对于HTTP / 2并非如此,该连接将保持打开状态,直到任一对端决定显式关闭它为止。

有关空闲超时的建议恰好是为了防止客户端在看到没有网络流量的情况下过早显式关闭连接,而与请求或响应无关。