使用Spring Boot SSE构建实时数据推送服务
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
@RestController
public class SseController {
@GetMapping(path = "/stream-sse", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public SseEmitter handleSse() {
SseEmitter emitter = new SseEmitter();
// 在新线程中处理长时间运行的任务,例如数据获取和发送
new Thread(() -> {
try {
// 模拟数据源
Object data = ...;
emitter.send(data);
// 发送完毕后关闭发射器
emitter.complete();
} catch (Exception e) {
emitter.completeWithError(e);
}
}).start();
return emitter;
}
}
这段代码创建了一个简单的REST控制器,提供了一个端点/stream-sse
,该端点使用SseEmitter向客户端推送服务器发送事件(SSE)。在新线程中,我们模拟了数据的获取,并通过SseEmitter发送给客户端。一旦数据发送完毕或发生错误,发射器将被关闭。这个例子展示了如何在Spring Boot应用程序中实现SSE,并且是实时数据推送服务的一个简单基础。
评论已关闭