如何在HTTP2中保持长连接?

问题描述 投票:0回答:1

我正在阅读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标志,所以该流不会关闭?

http2
1个回答
0
投票

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

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

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

有关空闲超时的建议正是为了防止客户端在没有网络流量时独立于请求或响应而过早显式关闭连接。

© www.soinside.com 2019 - 2024. All rights reserved.