springboot sse 流式输出
时间: 2023-06-29 20:02:53 浏览: 249
在Spring Boot中,可以通过使用Server-Sent Events(SSE)技术来实现流式输出。SSE是一种基于HTTP的服务端推送技术,它允许服务器向客户端发送单向的数据流,这些数据可以是文本、JSON等数据格式。
下面是一个使用Spring Boot SSE实现流式输出的示例代码:
首先,在Spring Boot应用程序中添加以下依赖项:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
```
然后,创建一个RESTful控制器,该控制器使用SSE技术向客户端输出数据。以下是一个简单的控制器示例:
```java
@RestController
public class MyController {
@GetMapping("/stream")
public Flux<String> stream() {
return Flux.interval(Duration.ofSeconds(1))
.map(seq -> "Stream - " + seq);
}
}
```
在上面的示例中,我们使用`@GetMapping`注解将一个路由绑定到`/stream`路径。当客户端连接到此路由时,控制器将使用`Flux`对象返回数据流。在这种情况下,我们使用`Flux.interval()`方法创建一个每秒发送一次消息的数据流。
最后,在客户端中,可以使用JavaScript代码来订阅SSE事件并接收数据。以下是一个简单的JavaScript代码示例:
```javascript
const source = new EventSource('/stream');
source.onmessage = function(event) {
console.log(event.data);
};
```
在上面的示例中,我们使用`EventSource`对象来订阅`/stream`路径上的SSE事件。当事件被触发时,回调函数将被调用,并显示接收到的数据。
阅读全文