✅SSE面试题预测:SSE 与WebSocket区别详解
1. 什么是 SSE(Server-Sent Events)?和 WebSocket 有什么区别?
考察点:协议理解
参考答案:
SSE 是一种服务器向客户端单向推送数据的技术,基于 HTTP 协议。和 WebSocket 的主要区别:
| 对比项 | SSE | WebSocket |
|---|---|---|
| 通信方向 | 单向(服务端→客户端) | 双向 |
| 协议 | HTTP | 独立的 WebSocket 协议 |
| 连接 | 普通 HTTP 连接 | 需要协议升级握手 |
| 数据格式 | 纯文本 | 文本或二进制 |
| 断线重连 | 浏览器自动重连 | 需要自己实现 |
| 兼容性 | 几乎所有浏览器 | 部分老浏览器不支持 |
我们选择 SSE 的原因有三个,第一个是场景匹配:大模型输出是服务端单向推给前端,不需要双向通信;第二个是简单:不需要额外的协议,nginx 也好配置。
SSE 的数据格式:
2. 你是怎么用 Spring Boot 实现 SSE 接口的?
考察点:SseEmitter 使用
参考答案:
Spring Boot 提供了 SseEmitter 类来实现 SSE。基本用法:
@GetMapping(value = "/stream", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public SseEmitter stream() {
SseEmitter emitter = new SseEmitter(60000L); // 60秒超时
// 异步执行,发送数据
executor.execute(() -> {
try {
for (int i = 0; i ...
热门评论
27 条评论
回复