title: How to keep long connection in HTTP2?
body: <p>I am reading the documentation of Alexa Voice Service capabilities and came across the part on managing HTTP2 connection. I don't really understand how this down channel works behind the scenes. Is it using server push? Well, could server push be used to keep a long connection? Or is it just using some tricks to keep the connection alive for a very long time?</p>
  <p>As stated on the documentation, the client needs to establish a down channel stream with the server.</p>
  <p><a href="https://i.stack.imgur.com/qXuD7.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/qXuD7.png" alt="enter image description here" /></a></p>
  <p>Based on what I read here <a href="https://www.rfc-editor.org/rfc/rfc7540" rel="nofollow noreferrer">https://www.rfc-editor.org/rfc/rfc7540</a>, From this state diagram:</p>
  <p><a href="https://i.stack.imgur.com/DsmNO.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/DsmNO.png" alt="enter image description here" /></a></p>
  <p>once the stream sends a HEADER frame, followed by an END STREAM flag, the state will be half-closed(local) on the point of view of the client. So, this is how half-closed state for the device happened, as stated in above image. Correct me that if I am wrong.</p>
  <p>For managing the HTTP connection, this is what it says.</p>
  <p><a href="https://i.stack.imgur.com/Scjfw.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/Scjfw.png" alt="enter image description here" /></a></p>
  <p>Based on my understanding: the client sets a timeout of 60minutes for the GET request. After the request is sent, the server will not send any response. Then the connection will remain open for 60minutes. But once a response is sent from the server, the connection should be closed. Isn't that supposed to happen? Or, is it because when the server sends response through the down channel stream, it did not send an END STREAM flag so the stream will not be closed?</p>