更新时间:2025-05-28 GMT+08:00
分享

使用Server-Sent Events协议的方式访问在线服务

背景说明

Server-Sent Events(SSE)是一种服务器向客户端推送数据的技术,它是一种基于HTTP的推送技术,服务器可以向客户端推送事件。这种技术通常用于实现服务器向客户端单向推送实时数据,例如实时新闻更新、股票价格等。

SSE主要解决了客户端与服务器之间的单向实时通信需求(例如ChatGPT回答的流式输出),相较于WebSocket(双向实时),它更加轻量级且易于实现。

使用SSE协议访问在线服务有以下特点:

  • 简单易用:SSE协议基于HTTP协议,实现简单,客户端无需复杂的配置或额外的库支持,可以通过普通的HTTP连接实现数据的实时推送。
  • 自动重连:SSE支持自动重连机制,当连接中断时,客户端会自动尝试重新连接,确保数据推送的连续性。
  • 单向通信:SSE是单向的,服务器可以向客户端发送事件,但客户端不能通过同一个连接向服务器发送数据。
  • 资源占用低:SSE使用HTTP连接,相对于WebSocket等其他实时通信协议,资源占用较低,适合轻量级的实时数据推送场景。

前提条件

在线服务中的模型导入选择的镜像需支持SSE协议。

约束与限制

  • SSE协议只支持部署在线服务。
  • 只支持自定义镜像导入模型部署的在线服务。
  • 调用API访问在线服务时,对预测请求体大小和预测时间有限制:
    • 请求体的大小不超过12MB,超过后请求会被拦截。
    • 因APIG(API网关)限制,平台每次请求预测的时间不超过40秒。

SSE在线服务调用

SSE协议本身不提供额外的认证方式,和HTTP请求方式一致。

可以使用ModelArts提供的以下认证方式:

SSE服务调用如下(以图形界面的软件Postman进行预测,token认证为例):

图1 SSE服务调用
图2 响应头Content-Type

正常情况下,可以观察到响应头Content-Type为text/event-stream;charset=UTF-8。

相关文档