如何使用持久连接发出 http2 请求? (任何语言)
How to make http2 requests with persistent connection ? (Any language)
如何使用具有持久连接的 http2 连接到 https://api.push.apple.com?
持久连接是为了避免快速连接和断开:
APNs treats rapid connection and disconnection as a denial-of-service attack
使用 https://nghttp2.org 在 c 中编写客户端是唯一的解决方案吗?
(如果这个问题应该在另一个 StackExchange 网站上提出,请告诉我)
非持久连接已成为过去。它们在 HTTP/1.0 中使用,但 HTTP/1.1 已经移动到默认情况下连接持久的模型,并且 HTTP/2(也被多路复用)继续使用该连接模型默认情况下是持久的。
独立于您用于开发应用程序的语言,任何 HTTP/2 兼容的客户端在默认情况下都将使用持久连接。
您只需要使用 HTTP/2 客户端库,这样您就不会在每次发出请求后显式关闭连接。
通常,这些库使用一个连接池来保持连接打开,通常直到空闲超时触发。
当您的应用程序发出 HTTP 请求时,库将选择一个打开的连接并发送请求。当响应到达时,库将 不会 关闭连接,而是将其放回池中以备下次使用。
只需研究一下您要使用的库如何允许您在不关闭连接的情况下发出多个请求。
我也遇到了这个问题!
如果连接空闲了很长时间(大约 1 小时),那么函数 poll 会捕获到套接字状态没有改变。它总是 returns 0 即使 on_frame_send_callback 被调用。
有谁能解决问题吗?
如何使用具有持久连接的 http2 连接到 https://api.push.apple.com?
持久连接是为了避免快速连接和断开:
APNs treats rapid connection and disconnection as a denial-of-service attack
使用 https://nghttp2.org 在 c 中编写客户端是唯一的解决方案吗?
(如果这个问题应该在另一个 StackExchange 网站上提出,请告诉我)
非持久连接已成为过去。它们在 HTTP/1.0 中使用,但 HTTP/1.1 已经移动到默认情况下连接持久的模型,并且 HTTP/2(也被多路复用)继续使用该连接模型默认情况下是持久的。
独立于您用于开发应用程序的语言,任何 HTTP/2 兼容的客户端在默认情况下都将使用持久连接。
您只需要使用 HTTP/2 客户端库,这样您就不会在每次发出请求后显式关闭连接。 通常,这些库使用一个连接池来保持连接打开,通常直到空闲超时触发。
当您的应用程序发出 HTTP 请求时,库将选择一个打开的连接并发送请求。当响应到达时,库将 不会 关闭连接,而是将其放回池中以备下次使用。
只需研究一下您要使用的库如何允许您在不关闭连接的情况下发出多个请求。
我也遇到了这个问题! 如果连接空闲了很长时间(大约 1 小时),那么函数 poll 会捕获到套接字状态没有改变。它总是 returns 0 即使 on_frame_send_callback 被调用。
有谁能解决问题吗?