Server Push
因為被問到,所以整理一下 Server Push 相關的技術
Pushlet
Long polling
Long-polling 是一種 polling 的變形,根據 stackoverflow 上的回答: polling 是 client 端定期跟 Server 端獲取資料的方式,在這種方式下 client 需要定期、頻繁地獲取資料,在更新頻率不穩定時效率較差。 long-polling 則是 polling 的一種變形:當 server 沒有資料可以提供時不立即回傳空內容,而是保持連線直到有資料為止 (或者連線超時) 。在這種情況下就可以做到類似 server-push 的功能。
Server-send Event
server-send event 是一個 HTML5 標準:透過 mime 中的 text/event-stream 傳遞資訊,內容是一串文字跟一對換行做為結尾。 作用上 SSE 透過單向將資料從 Server 端送給 Client。然而在非使用 HTTP/2 的情況下,SSE 在 Chrome 與 Firefox 都有最高連線數的問題, 並分別標註為 Won’t Fix。
Web Socket
相較於 SSE,Web Socket 提供雙向 (bi-directional) 與 全雙工 (full-duplex) 的通訊方式,Client 跟 Server 雙方可以同時傳遞資訊, 在使用上更具有彈性。然而在 server 端需要維持連線,導致在 server 端上較難做到分散流量的做法。