2016-10-27 60 views
0

http服務器是否可以一點一點地響應數據 - 而不會響應「範圍」請求?http可以發送流式響應而不是「範圍」響應/請求?

例如,假設我要不斷地流中的文本數據返回到客戶端 - 文本數據的幾乎永無止境的HTTP流,這是由客戶端收到一個HTTP請求的結果。

我能做到這一點無需客戶端發送我在迴應我發送「接受範圍」頭一個「範圍」的要求嗎?

而且我看到code examples of servers streaming data back to clients,但預計已經發出了一系列頭的客戶呢?

回答

1

範圍請求請求對資源的字節的特定範圍。期望該請求在合理的時間內結束是安全的。然而,沒有任何東西阻止你在沒有定期請求關閉/結束連接的情況下從服務器推送數據。這隻意味着請求將花費很長時間,並可能會浪費服務器上的資源。

這有時被稱爲「長輪詢」,尤其是當連接處於空閒狀態(但仍活着)的大部分時間,發送數據,只有當事情發生在服務器上。一個例子是基於網絡的聊天,儘管在現代這種情況下websockets比HTTP更合適。

+0

感謝您的反饋!因此,人們可以使用[StreamedResponse](http://docs.oracle.com/javaee/6/api/javax/ws/rs/core/StreamingOutput.html)從服務器流回數據 - 但這只是一個方便在服務器上,除非客戶端已經請求了遠程響應,並且服務器已經響應了該範圍,否則不會由客戶端進行流式傳輸? 因此,即使該服務器響應與StreamingOutput是不是真的從客戶的角度看流,如果客戶端不請求了一系列長輪詢請求? –

+1

不,只是忘記了整個範圍的事情(如果你想知道更多的信息,請閱讀它)。 – Kayaman

+0

很酷......謝謝! –