2016-05-03 41 views
0

如何通過持久連接使用http2連接到https://api.push.apple.com如何使持久連接的http2請求? (任何語言)

持久連接,以避免快速連接和斷開:

的APN治療快速連接和斷開的拒絕服務攻擊

https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/APNsProviderAPI.html

是寫一個客戶端c使用https://nghttp2.org唯一的解決方案?

(如果這個問題應該在另一個StackExchange網站詢問,請告訴我)

回答

2

非持久性連接是過去的遺物。它們在HTTP/1.0中使用,但HTTP/1.1已經轉移到默認持久連接的模型中,並且HTTP/2(也被複用)繼續保持默認持久連接模式。

獨立於您用來開發應用程序的語言,默認情況下,任何符合HTTP/2的客戶端都將使用持久連接。

您只需要使用HTTP/2客戶端庫,但不要在每次發出請求後都明確關閉連接。 通常,這些庫使用連接池來保持連接處於打開狀態,通常情況下,直到發生空閒超時爲止。

當您的應用程序發出HTTP請求時,庫將選擇一個打開的連接併發送請求。當響應到達時,庫將而不是關閉連接,但將其放回池中以備下次使用。

只要研究一下你想使用的庫如何讓你在不關閉連接的情況下發出多個請求。

0

我也遇到了這個問題! 如果連接長時間處於空閒狀態(大約1小時),那麼功能輪詢將捕獲沒有更改的套接字狀態。即使調用了on_frame_send_callback,它始終返回0。

有沒有人可以找出問題?

+0

tcp 0 468 192.168.1.201:41320 17.110.227.100:443 ESTABLISHED 643/apns2_provider。連接仍然存在,但在提交請求後,沒有更改套接字狀態(無數據輸入)。 –