2016-10-20 74 views

回答

14

Websockets:雙向異步通信。到目前爲止,HTTP/2不能很好地工作,但正在努力實現。 (例如WISHwebsockets2-over-http2。)

SSE:服務器可以通知瀏覽器事件。使用普通的HTTP,即使使用HTTP/2也能正常工作。使用SSE通過發送來自客戶端到服務器的通知可以模擬異步通信,通過常規的POST請求,在HTTP/2中,這些請求在同一個套接字中與其他所有內容相同的套接字在同一個套接字中,因此建立新連接的成本可以避免。但是,服務器端處理POST請求的處理成本可能高於使用本機websocket的處理成本。

HTTP/2推送:與上述兩者完全無關,它是一種服務器提前將資源推送到瀏覽器的機制。可能的應用:sending CSSs and Javascripts while the PHP engine is creating the HTML。從理論上講,HTTP/2 Push和SSE可以結合使用,使瀏覽器可以使用事件,而不會產生最初的往返延遲。

+0

這是一個很酷的短版...但它隱藏了陷阱和不準確之處,有利於提供一個好的概述,還有更多的信息[這裏](http://stackoverflow.com/a/28197906/4025095),[這裏](http://stackoverflow.com/questions/5195452/websockets-vs-server-sent-events-eventsource)和[這裏](http://stackoverflow.com/questions/28582935/does-http-2-make -websockets-obsolete)...另外,Websockets在握手期間通過回落到HTTP/1.1與HTTP/2完美協作。過去將HTTP/2與Websockets合併的努力已經被放棄,雖然可能會有新的努力,但我不知道。 – Myst

+0

@Myst:請參閱Daniel Stenberg編輯的回答。 WISH和websockets2-over-http2正在w3-wg郵件列表中討論。 – dsign

相關問題