本页面适用于 Apigee 和 Apigee Hybrid。
查看 Apigee Edge 文档。
本主题介绍如何将 WebSockets 与 Apigee 和 Apigee Hybrid 搭配使用。
简介
很多情况下需要实时进行网络互动,例如游戏、通信、金融交易和其他高吞吐量活动。
WebSocket 是一种协议,可通过单个 TCP 连接在网络客户端与网络服务器之间提供全双工通信通道。WebSocket 协议使用 HTTP 协议在客户端与服务器之间建立连接。建立后,客户端和服务器会使用 WebSocket 协议来发送和接收数据。
WebSocket 规范和协议由 W3C 维护。
支持在 Apigee 中使用 WebSocket
在 Apigee 和 Apigee Hybrid 中,环境组提供到环境的路由,并定义公开 API 代理的主机名。环境组同时原生支持 HTTP 和 WS 协议。您不必创建特殊环境组或任何特殊配置即可使用 WebSocket。而是由客户端通过添加 Upgrade
请求标头来请求将协议从 HTTP 升级到 WS。向 API 代理端点发出的升级请求会返回 101 Switching Protocols
响应。其他请求和响应将在开放 WebSocket 连接上双向进行,直到关闭为止。
政策支持
所有政策都会在 Web 套接字代理中发挥作用,直到握手完成(即,直到 HTTP 101
响应返回到客户端),在此之后不会执行任何政策,但在握手之前验证的 OAuth 令牌仍然有效,如果令牌过期或被撤消,则连接会被丢弃。
撤消连接
在以下情况下,会关闭 WebSocket 连接:
- 代理端点收到的请求没有 API 密钥或 OAuth 令牌。
- 代理端点收到的请求包含已过期或无效的 API 密钥或 OAuth 令牌。
- WebSocket 连接超时。
使用跟踪记录和分析
在调试工具中,对于每个 WebSocket 连接,您将看到一个请求,其中包含 101 状态,如以下屏幕截图所示:
在 Apigee 分析信息中心中,您将看到每个 WebSocket 会话的流量计数。会话期间发生的往返流量不会显示在信息中心内。
WebSocket 应用示例
如需了解详情,您可以参阅 GitHub 上正常运行的 websocket-sample 应用。此示例演示如何通过 WebSocket 连接调用 API 代理。代理会调用在 Kubernetes 集群中部署的简单后端目标应用。