Compartilhar via

为服务器发送的事件配置 API

本文提供有关在 API Management 中配置可实现服务器发送的事件 (SSE) 的 API 的指南。 SSE 基于 HTML5 EventSource 标准,在建立客户端连接后,通过 HTTP 自动将流式处理(推送)数据传送到客户端。

小窍门

API 管理还提供对 WebSocket API 的原生支持,这些 API 使客户端和服务器之间保持单一、持久的双向连接。

先决条件

SSE 指南

当使用 API Management 来访问实现 SSE 的后端 API 时,请遵循以下准则。

  • 为长时间运行的 HTTP 连接选择服务层 - SSE 依赖于某些 API 管理 定价层支持的长时间运行的 HTTP 连接。 经典和 v2 API 管理层支持长时间运行的连接,但消耗层不支持。

  • 使空闲连接保持活动状态 - 如果客户端和后端之间的连接可能空闲 4 分钟或更长时间,请实现使连接保持活动状态的机制。 例如,在连接后端启用传输控制协议(TCP)保持活动信号,或至少每隔4分钟发送一次来自客户端的网络流量。

    需要此配置来替代 Azure 负载均衡器强制执行的空闲会话超时 4 分钟,这在 API 管理基础结构中使用。

  • 将事件立即中继到客户端 - 关闭策略上的forward-request响应缓冲,以便事件立即中继到客户端。 例如:

    <forward-request timeout="120" fail-on-error-status-code="true" buffer-response="false"/>
    
  • 避免使用其他可缓冲响应的策略 - 某些策略(如 )也可以缓冲响应内容,不应与实现 SSE 的 API 一起使用。

  • 避免记录 Azure Monitor、Application Insights 和事件中心的请求/响应正文 - 可以使用诊断设置为 Azure Monitor 或 Application Insights 配置 API 请求日志记录。 借助该诊断设置,可以在请求执行的各个阶段记录请求/响应正文。 对于实现 SSE 的 API,记录请求/响应正文可能会导致意外缓冲,这可能会导致问题。 在全局/所有 API 范围内配置的 Azure Monitor 和 Application Insights 的诊断设置适用于服务中的所有 API。 可以根据需要替代单个 API 的设置。 登录到事件中心时,可以使用log-to-eventhubs来配置请求/响应日志记录的范围和上下文信息量。 对于实现 SSE 的 API,请确保为 Azure Monitor、Application Insights 和事件中心禁用请求/响应正文日志记录。

  • 禁用响应缓存 - 若要确保及时向客户端发送通知,请验证是否未启用 响应缓存 。 有关详细信息,请参阅 API 管理缓存策略

  • 在负载下测试 API - 在投入生产之前,遵循常规做法在负载下测试 API,以检测性能或配置问题。