Amazon CloudFront
开发人员指南 (API 版本 2016-09-29)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

将 WebSocket 与 CloudFront 分配结合使用

Amazon CloudFront 支持使用 WebSocket,后者是一种基于 TCP 的协议,它在客户端和服务器之间需要长期双向连接时很有用。对于实时应用程序,持久连接通常是必需的。可使用 Websocket 的场景包括社交聊天平台、在线协作工作区、多玩家游戏和提供实时数据馈送(如金融贸易平台)的服务。对于全双工通信,通过 WebSocket 连接的数据可双向流动。

CloudFront 全局支持 WebSocket 连接,而无需额外配置。所有 CloudFront 分配都具有内置 WebSocket 协议支持,前提是客户端和服务器也支持此协议。

WebSocket 协议的工作原理

WebSocket 协议是一种独立的、基于 TCP 的协议,可让您避免 HTTP 的一些开销和潜在的延迟增加。

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

默认情况下,WebSocket 协议使用端口 80(对于常规 WebSocket 连接)和端口 443(对于通过 TLS/SSL 的 WebSocket 连接)。您为 CloudFront 查看器协议策略源协议策略选择的选项适用于 WebSocket 连接以及 HTTP 流量。

WebSocket 要求

WebSocket 请求必须符合以下标准格式的 RFC 6455 (http://tools.ietf.org/html/rfc6455)。

示例客户端请求:

GET /chat HTTP/1.1 Host: server.example.com Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== Origin: http://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 连接,则客户端应用程序应重新发起与服务器的连接。