可以做服務器推送。但是如果客戶端是低級別碼頭客戶端,是否可以從服務器啓動新的會話或流?假設客戶是基於碼頭的低級客戶端,並且連接已經建立。是否可以從Jetty啓動http2會話或流假設http2連接已經存在?
0
A
回答
0
在建立初始連接並交換了前綴後,HTTP/2是一個對稱協議。
HTTP 語義要求客戶端發起請求,但在較低級別 - 在HTTP/2協議組幀級別 - 這不是必需的,並且服務器可能向客戶端發起流。
雖然HTTP/2協議幀前言後是對稱的,它仍然依賴於HTTP協議語義,即需要一個DATA
幀之前發送HEADERS
幀(即使是空的)。然而,如果你想在HTTP/2成幀的基礎上構建你自己的協議,這可能不會有太大的阻礙,你只需要添加幾個字節來通過網絡發送。另外,有一些建議使用HTTP/2成幀來傳輸HTTP/2 DATA
幀內的WebSocket(純雙向協議)幀,實質上是無限響應的無限請求。但我離題了。
至於HTTP/2的Jetty特定實現,是否有可能從服務器向Android客戶端發起流?
答案是雙重的。
第一個是目前的實現(Jetty 9.3.8)有一些假設,即HTTP/2成幀傳輸的協議是HTTP。這樣,服務器啓動的流當前被客戶端丟棄。 但是,要覆蓋此行爲並允許客戶端正確處理服務器啓動的流,這與服務器處理客戶端啓動的流的方式相當簡單。
第二個是Jetty的HTTP/2支持通常需要JDK 8,而目前這在Android中不可用。 如果已經存在能夠處理服務器啓動的流的HTTP/2 Android客戶端,請評論這個答案哪一個,因爲我真的很感興趣。
雖然服務器啓動的流的思想很有趣,我提交了this issue來跟蹤它。 如果這對你真的很重要,你可以聯繫Webtide(Jetty公司)來贊助實施。
相關問題
- 1. 是否可以在HTTPListener中使用HTTP2
- 2. 使用maven-jetty-plugin啓用HTTP2
- 3. nativescript是否支持http2?
- 4. 在nginx上啓用HTTP2
- 5. git克隆可以從http2中受益
- 6. 我們是否需要在Apache服務器上啓用http2,如果CDN啓用了Http2
- 7. AFNetworking現在是否支持HTTP2?
- 8. 如何啓用http2上centos7
- 9. APNS http2 API與http2卸載應用
- 10. 回收Jetty Http2客戶端流 - 最佳實踐?
- 11. 如何判斷Safari是否使用HTTP2?
- 12. jmeter是否支持http2請求?
- 13. JW播放器是否支持HTTP2?
- 14. Netty HttpObjectAggregator與Http2
- 15. Http2不明確
- 16. HTTP2,apache2與certbot
- 17. HTTP2與gunicorn
- 18. HTTP2支持臨
- 19. 在Windows上啓用Nginx上的http2
- 20. 檢查用戶是否已經登錄或會話在jsp中啓動
- 21. Jetty響應狀態200而不是304,而使用http2
- 22. HTTP2在Chrome中推送XMLHttpRequest緩存Miss
- 23. nodejs上的ERR_INVALID_HTTP_RESPONSE http2
- 24. Ruby HTTP2 GET請求
- 25. 節點http2和safari
- 26. Apache NMS - 如何確定連接是否已經啓動
- 27. 是否可以重新啓動/重新連接SignalR連接?
- 28. 如何測試會話是否已經存在?
- 29. 檢查數組是否已經存在於會話中
- 30. 在Go中可以使用http2客戶端的proxy/socks嗎?
感謝您的詳細解答@sbordet,我正在研究客戶端和服務器代碼。很高興知道實施起來很簡單。 – Nambi