代理 WebSocket 连接
WebSocket 通过长连接在客户端与服务器之间提供双向通信。Ingress Controller 转换路由时,生成的网关路由必须允许 HTTP 连接升级为 WebSocket。
网关可以代理通过 HTTPRoute、ApisixRoute 或 Ingress 配置的 WebSocket 后端。如需限制并发 WebSocket 连接,请参阅 limit-conn 插件。
前置条件
- 完成设置 Ingress Controller 和网关。
- 安装 websocat 以验证 WebSocket 连接。
启用 WebSocket
WebSocket 的启用位置取决于路由资源:
| 资源 | 配置 |
|---|---|
| HTTPRoute | 将后端 Service 端口的 appProtocol 设置为 kubernetes.io/ws 或 kubernetes.io/wss。HTTPRoute 没有路由级替代配置。 |
| ApisixRoute | 将 spec.http[].websocket 设置为 true,或使用 Service 端口的 appProtocol。 |
| Ingress | 将 k8s.apisix.apache.org/enable-websocket 注解设置为 true,或使用 Service 端口的 appProtocol。 |
以下示例配置 HTTPRoute 和 ApisixRoute。如果无法修改后端 Service,请使用 ApisixRoute 字段或 Ingress 注解,不要使用 HTTPRoute。