WebSockets 与 CloudFront发行版一起使用 - Amazon CloudFront
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

WebSockets 与 CloudFront发行版一起使用

Amazon CloudFront 支持使用 WebSocket基于 TCP 的协议,当您需要在客户端和服务器之间建立长期双向连接时,该协议非常有用。对于实时应用程序,持久连接通常是必需的。您可能使用的场景 WebSockets 包括社交聊天平台、在线协作工作空间、多人游戏以及金融交易平台等提供实时数据源的服务。通过 WebSocket 连接的数据可以双向流动,实现全双工通信。

CloudFront 支持全局 WebSocket 连接,无需额外配置。只要客户端和服务器都支持该 WebSocket 协议,所有 CloudFront 发行版都支持该协议。

WebSocket 协议的工作原理

该 WebSocket 协议是一个独立的、基于 TCP 的协议,它允许您避免 HTTP 的一些开销以及可能增加的延迟。

为了建立 WebSocket 连接,客户端会发送一个常规的 HTTP 请求,该请求使用 HTTP 的升级语义来更改协议。随后,服务器可以完成握手。 WebSocket 连接保持打开状态,客户端或服务器可以互相发送数据帧,而不必每次都建立新的连接。

默认情况下,该 WebSocket 协议使用端口 80 进行常规 WebSocket 连接,使用端口 443 进行通过 TLS/SSL 的 WebSocket 连接。您为自己选择的选项协议(仅自定义源)适用于 WebSocket连接 CloudFront 查看器协议策略和 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 连接,则客户端应用程序应重新启动与服务器的连接。

推荐设置

为了避免在使用时出现与压缩相关的意外问题 WebSockets,我们建议您在原始请求策略中包含以下标头:

  • Sec-WebSocket-Key

  • Sec-WebSocket-Version

  • Sec-WebSocket-Protocol

  • Sec-WebSocket-Accept

  • Sec-WebSocket-Extensions