你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用于: ✔️ Front Door 标准 ✔️ Front Door 高级版
Azure Front Door 支持标准层和高级层上的 WebSocket,而无需任何额外的配置。 以 RFC6455 进行标准化的 WebSocket 是基于 TCP 的协议,通过长时间运行的 TCP 连接,在服务器和客户端之间实现全双工通信。 此协议无需在 HTTP 中进行必要轮询,因此减少了部分 HTTP 开销。 它可以对多个请求或响应重复使用同一 TCP 连接,进而提高了资源利用率。 这可以实现更具交互性和实时性的场景。
WebSocket 非常适合需要实时更新或连续数据流的应用程序,例如聊天应用、仪表板、财务更新、GPS、在线教育、实时传送视频流和游戏。 例如,交易网站可以使用 WebSocket 实时推送和更新定价数据。
在 Azure Front Door 上使用 WebSocket
在 Azure Front Door 上使用 WebSocket 时,请考虑以下事项:
- 将连接升级到 WebSocket 后,Azure Front Door 会在已建立的连接中,将数据在客户端和源服务器之间传输,而不进行任何检查或操作。
- Web 应用程序防火墙 (WAF) 检查会在 WebSocket 建立阶段进行。 建立连接后,WAF 不会执行进一步检查。
- 对源服务器的运行状况探测将通过 HTTP 协议进行。
- WebSocket 路由禁用缓存。 对于启用了缓存的路由,Azure Front Door 不会将 WebSocket 升级标头转发到源,而是将其视为 HTTP 请求,忽略缓存规则。 这会导致 WebSocket 升级请求失败。
- 空闲超时为 5 分钟。 如果 Azure Front Door 在过去 5 分钟内未检测到源服务器或客户端的任何数据传输,则该连接将被视为空闲并关闭。
- 目前,Azure Front Door 上的 WebSocket 连接最长保持 4 小时。 由于底层服务器升级或其他维护活动,WebSocket 连接可能会被中断。 强烈建议在应用程序中实现重试逻辑。
- 目前,每个 Azure Front Door 配置文件最多支持 3,000 个并发全局连接。 有关详细信息,请参阅 Azure Front Door 标准和高级服务限制。
WebSocket 协议的工作原理
WebSocket 协议使用 80 端口进行标准 WebSocket 连接,使用 443 端口进行基于 TLS/SSL 的 WebSocket 连接。 作为一种有状态协议,客户端与服务器之间的连接会保持活动状态,直到任一方终止连接。 WebSocket 连接以 HTTP 升级请求开头,使用 ws:
或 wss:
方案。 这些连接需要使用 Connection: Upgrade
、Upgrade: websocket
、Sec-WebSocket-Key
和 Sec-WebSocket-Version
标头,通过升级 HTTP 请求/响应来建立,如请求头示例所示。
客户端的握手请求如下所示:
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
服务器使用 101 Switching Protocols
状态代码进行响应,以指示它正在根据客户端请求切换到 WebSocket 协议。 响应包括 Connection: Upgrade
和 Upgrade: websocket
标头,确认协议切换。 返回 Sec-WebSocket-Accept
标头是为了验证连接是否已成功升级。
服务器的握手请求如下所示:
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
Sec-WebSocket-Protocol: chat
客户端收到服务器响应后,WebSocket 连接将打开以开始传输数据。 如果 WebSocket 连接因客户端或服务器或网络中断而断开连接,则客户端应用程序应重新发起与服务器的连接。
后续步骤
- 了解如何创建 Azure Front Door 配置文件。
- 了解 Azure Front Door 如何将流量路由到源。