WebSockets 搭配 CloudFront分佈使用 - Amazon CloudFront

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

WebSockets 搭配 CloudFront分佈使用

Amazon CloudFront 支援使用 WebSocket,這是 TCP型通訊協定,在用戶端和伺服器之間需要長期雙向連線時非常有用。持久性連線通常是即時應用程式的一項要求。您可能使用的案例 WebSockets 包括社交聊天平台、線上協作工作區、多玩家遊戲,以及提供即時資料摘要的服務,例如金融交易平台。 WebSocket 連線上的資料可以朝全雙工通訊的兩個方向流動。

WebSocket 功能會自動啟用,以使用任何分佈。若要使用 WebSockets,請在連接至分發的快取行為中設定下列其中一項:

  • 將所有檢視器請求標頭轉送至您的原始伺服器。(您可以使用AllViewer 受管原始伺服器請求政策 。)

  • 專門轉送原始伺服器Sec-WebSocket-Version請求政策中的 Sec-WebSocket-Key和 請求標頭。

WebSocket 通訊協定的運作方式

WebSocket 通訊協定是獨立的 TCP型通訊協定,可讓您避免 的部分額外負荷,以及可能增加的延遲HTTP。

若要建立 WebSocket 連線,用戶端會傳送使用 HTTP的升級語義來變更通訊協定的定期HTTP請求。然後,伺服器便可以完成交握。 WebSocket 連線會保持開啟狀態,而且用戶端或伺服器可以互相傳送資料影格,而不必每次都建立新的連線。

根據預設, WebSocket 通訊協定會使用連接埠 80 進行一般 WebSocket 連線,而連接埠 443 則用於透過 TLS/ 的 WebSocket 連線SSL。您為 CloudFront 檢視器通訊協定政策選擇的 選項,通訊協定 (僅限自訂原始伺服器) WebSocket並套用至連線和HTTP流量。

WebSocket 需求

WebSocket 請求必須符合下列標準格式的 RFC 6455

範例用戶端請求:

GET /chat HTTP/1.1 Host: server.example.com Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== Origin: https://example.com Sec-WebSocket-Protocol: chat, superchat Sec-WebSocket-Version: 13

範例伺服器回應:

HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo= Sec-WebSocket-Protocol: chat

如果用戶端或伺服器中斷 WebSocket 連線,或網路中斷連線,用戶端應用程式應該會重新啟動與伺服器的連線。

建議的 WebSocket 標頭

為了避免使用 時發生非預期的壓縮相關問題 WebSockets,建議您在原始伺服器請求政策 中包含下列標頭:

  • Sec-WebSocket-Key

  • Sec-WebSocket-Version

  • Sec-WebSocket-Protocol

  • Sec-WebSocket-Accept

  • Sec-WebSocket-Extensions