酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

springboot 使用 sseemitter

SSE(Server-Sent Events)是一种用于在客户端和服务器之间实现单向实时通信的技术。Spring Boot 提供了一个方便的方式来实现 SSE,使用`SseEmitter`类。 下面是一个简单的示例代码,演示如何在 Spring Boot 中使用`SseEmitter`: ```java import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; import java.io.IOException; @RestController public class SSEController { @GetMapping("/stream-data") public SseEmitter streamData() { SseEmitter emitter = new SseEmitter(); // 启动一个新线程模拟生成数据并向客户端发送 new Thread(() -> { try { for (int i = 0; i < 10; i++) { emitter.send(i); Thread.sleep(1000); // 每秒发送一次 } emitter.complete(); } catch (IOException | InterruptedException e) { emitter.completeWithError(e); } }).start(); return emitter; } } ``` 在上面的示例中,我们创建了一个`SseEmitter`对象,并在`streamData`方法中返回它。然后我们启动一个新线程,循环发送数据给客户端。调用`emitter.complete()`表示数据发送完成。 客户端可以通过访问`/stream-data`端点来接收数据流。接收到数据后,客户端可以在页面上实时展示数据。 需要注意的是,为了确保资源的释放,最好在`complete()`方法之后调用`SseEmitter`对象的`off()`方法,如下所示: ```java emitter.onCompletion(() -> { // 关闭资源 emitter.off(); }); ``` [2024-10-31 16:13:12 | AI写代码神器 | 1041点数解答]

相关提问