我想在Web服務中實現長輪詢。我可以在客戶端設置足夠長的暫停時間。 我可以給中級網絡組件提示以保持響應是開放的嗎?我的意思是NAT,病毒掃描程序,反向代理或周圍的SSH隧道,可能在客戶端和服務器之間,我沒有在我的控制之下。如何保持HTTP長輪詢連接打開?
下載可能會持續數小時,但閒置連接可能會在不到一分鐘內終止。這是我想要防止的。我可以通知中間網絡一個空閒連接是我想要的,而不是因爲服務器已斷開?
如果是這樣,怎麼樣?我一直在搜索四個小時左右,但我沒有找到有關這方面的信息。
- 我應該發送
200 OK
,也許一些頭,然後什麼都沒有? - 我必須回覆
102 Processing
而不是200 OK
,一切都很好嗎? - 我應該不時發送
0x16
(同步空閒)字節嗎?如果是這樣,在最初的HTTP狀態碼之前或之後,在標題之前或之後?他們是否將其轉入傳輸的文件,並可能會破壞它?
Web服務/服務器使用Boost在C++中,並且返回的內容文件位於Turtle語法中。
A [HTTP持續連接](https://en.wikipedia.org/wiki/HTTP_persistent_connection)也許?如果您只是閱讀HTTP 1.1規範,那麼該選項應該非常清晰。 –
我打算保持*響應*打開。 (我相應地更新了我的問題。)我認爲長時間的下載可能會持續數小時,而不到一分鐘後沒有響應可能會導致超時。例如,PuTTY有一些TCP保持活動選項。我不知道這樣的事情是否也可以通過HTTP實現。 – Paramaeleon
@Someprogrammerdude這並不能保證連接*和響應*將保持打開狀態。這就是爲什麼實現長輪詢的庫必須能夠在超時之後重新連接。 –