WebSockets 搭 CloudFront配發行版使用 - Amazon CloudFront

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

WebSockets 搭 CloudFront配發行版使用

Amazon CloudFront 支援使用以 TCP 為基礎的通訊協定 WebSocket,當您需要用戶端和伺服器之間的長期雙向連線時非常有用。持久性連線通常是即時應用程式的一項要求。您可能使用的場景 WebSockets 包括社交聊天平台,在線協作工作區,多玩家遊戲以及提供諸如金融交易平台之類的實時數據源的服務。通過 WebSocket 連接的數據可以雙向流動,以實現全雙工通信。

WebSocket 功能會自動啟用,以便與任何發行版搭配使用。若要使用 WebSockets,請在附加至發行版的快取行為中設定下列其中一項:

  • 將所有查看者請求標頭轉發到您的來源。(您可以使用AllViewer 受管理的來源要求原則。)

  • 特別在您的原始Sec-WebSocket-Version請求策略中轉發Sec-WebSocket-Key和請求標頭。

WebSocket 協議的工作原理

該 WebSocket 協議是一種獨立的基於 TCP 的協議,可讓您避免 HTTP 的某些超額和可能增加的延遲。

若要建立 WebSocket 連線,用戶端會傳送一般 HTTP 要求,該要求使用 HTTP 的升級語意來變更通訊協定。然後,伺服器便可以完成交握。 WebSocket 連線會保持開啟狀態,而且用戶端或伺服器可以彼此傳送資料框架,而不必每次都建立新的連線。

根據預設, WebSocket 通訊協定使用連接埠 80 進行一般 WebSocket 連線,而連接埠 443 則用於透過 TLS/SSL 的 WebSocket 連線。您為您選擇 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