
# 使用Server-Sent Events协议的方式访问在线服务
#### 背景说明
Server-Sent Events（SSE）是一种服务器向客户端推送数据的技术，它是一种基于HTTP的推送技术，服务器可以向客户端推送事件。这种技术通常用于实现服务器向客户端单向推送实时数据，例如实时新闻更新、股票价格等。
SSE主要解决了客户端与服务器之间的单向实时通信需求（例如大模型回答的流式输出），相较于WebSocket（双向实时），它更加轻量级且易于实现。
使用SSE协议访问在线服务有以下特点：
- 简单易用：SSE协议基于HTTP协议，实现简单，客户端无需复杂的配置或额外的库支持，可以通过普通的HTTP连接实现数据的实时推送。
- 自动重连：SSE支持自动重连机制，当连接中断时，客户端会自动尝试重新连接，确保数据推送的连续性。
- 单向通信：SSE是单向的，服务器可以向客户端发送事件，但客户端不能通过同一个连接向服务器发送数据。
- 资源占用低：SSE使用HTTP连接，相对于WebSocket等其他实时通信协议，资源占用较低，适合轻量级的实时数据推送场景。
 
#### 前提条件
在线服务中的模型导入选择的镜像需支持SSE协议。
#### 约束与限制
- SSE协议只支持部署在线服务。
- 只支持自定义镜像导入模型部署的在线服务。
- 调用API访问在线服务时，对预测请求体大小和预测时间有限制：
  - 请求体的大小不超过12MB，超过后请求会被拦截。
  
  - 因APIG（API网关）限制，平台每次请求预测的时间不超过40秒。
   
 
#### SSE在线服务调用
SSE协议本身不提供额外的认证方式，和HTTP请求方式一致。
可以使用ModelArts提供的以下认证方式：
- [token认证](https://support.huaweicloud.com/usermanual-standard-modelarts/inference-modelarts-0023.html)
- [AK/SK](https://support.huaweicloud.com/usermanual-standard-modelarts/inference-modelarts-0024.html)
- [APP认证](https://support.huaweicloud.com/usermanual-standard-modelarts/inference-modelarts-0025.html)
SSE服务调用如下（以图形界面的软件Postman进行预测，token认证为例）：
图1SSE服务调用   
![](https://support.huaweicloud.com/usermanual-standard-modelarts/figure/zh-cn_image_0000001952663666.png "点击放大")
图2响应头Content-Type   
![](https://support.huaweicloud.com/usermanual-standard-modelarts/figure/zh-cn_image_0000001986182937.png "点击放大")
![](https://support.huaweicloud.com/usermanual-standard-modelarts/public_sys-resources/note_3.0-zh-cn.png)
正常情况下，可以观察到响应头Content-Type为text/event-stream;charset=UTF-8。
