
01 引言
大模型时代,尤其会话模型为了提高用户的使用体验,它不会将所有的数据加载完成一次响应给客户端,而是通过数据流,一点点的将数据慢慢呈现出来。
正是这种有趣的交互方式一次次将SSE(Server Sent Event)技术推到大众视野。之前的文章已经介绍过SSE推送技术以及SSE替代WebSocket实现直播间实时评论功能的文章,这里就不在赘述。
恰巧,有位粉丝朋友咨询怎么讲流式数据传给前端,前端怎么接收?小编为此做了相关的测试,整理在这里,分享给大家。
02 思维定式
我们经常编写的是一次请求,一次响应这样标准的http请求。如:
@RestController
public class FooController {
@GetMapping("/foo")
public String foo() {
return "success";
}
}
而流式数据该怎么处理呢?一次请求,有源源不断的数据加载进来。如果按照思维定式处理,只能能到所有的数据全部加载完成,再响应给前端。这样带来的结果有:
- 响应时间过长,体验感很差
- 响应超时,前端无法获取到数据
流式数据返回在响应式编程里面非常普遍,如reactor.core.publisher.Flux、io.reactivex.Flowable等。我们姑且以Flux和Flowable作为案例测试。
03 流式响应
3.1 Flux<T>
Flux是spring-boot-starter-webflux管理下的reactor-core.jar包。具体的Maven:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
案例
@GetMapping("/stream")
public Flux<String> streamData() {
return Flux.interval(Duration.ofSeconds(1)).map
流式数据服务端与前端传输及接收方法

最低0.47元/天 解锁文章
1553

被折叠的 条评论
为什么被折叠?



