三种 SSE 对比
这里有三种方式,分别是 STDIO,HTTP SSE,WebFlux SSE。
SSE(Server-Sent Events),是服务端主动推送数据给客户端。
STDIO
Standard Input/Output
程序与外界交换数据的基本方式
包括 stdin(标准输入)、stdout(标准输出)、stderr(标准错误输出)
# 示例:命令行程序通过 STDIO 交互
echo "Hello World" | grep "Hello"
HTTP SSE
服务器推送事件
服务器向浏览器单向实时推送数据的技术
基于 HTTP 长连接,比 WebSocket 更轻量
// 客户端代码
const eventSource = new EventSource('/events');
eventSource.onmessage = function(event) {console.log('收到数据:', event.data);
};// 服务器端代码
@GetMapping("/events")
public SseEmitter streamEvents() {SseEmitter emitter = new SseEmitter();// 推送数据逻辑return emitter;
}
WebFlux 响应式
Spring WebFlux 是 Spring 5 引入的响应式 Web 框架
响应式编程:基于数据流和变化传播的编程范式
非阻塞、异步处理,适合高并发场景
@RestController
public class ReactiveController {@GetMapping("/stream")public Flux<String> streamData() {return Flux.interval(Duration.ofSeconds(1)).map(i -> "数据-" + i).take(10);}
}