Webflux / Angular慢速服务器端事件vs http-client

问题描述 投票:0回答:1

我正在本地运行一个带有angular和webflux的演示,点击一个webflux端点,从db返回3张大小为〜(20MB,1k,20MB)的照片

在角度服务上使用http-client和SSE的时间差异很大,我在这里遗漏了什么?

enter image description here

弹簧控制器

@RestController
public class PhotoController {

    @GetMapping(value = "/photos")
    public Flux<Photo> getAllPhoto() {
        return photoService.findAll();
    }
}

角度服务

     getWithGET(): Observable<any> {
         return this.http.get(this.URL);
     }

    getWithSSE(): Observable<any> {
        return Observable.create(obs => {
            const es = new EventSource(this.URL);
            es.addEventListener('message', (evt) => {
                obs.next(evt);
            });
            return () => es.close()
        });
    }

角度分量

clickGET() {
  this.requestsService.getWithGET()
  .subscribe(
    data => console.log(data);

}
clickSSE() {
  this.requestsService.getWithSSE()
  .pipe(take(3))
  .subscribe(
    message  => console.log(message );
  }
spring angular server-sent-events spring-webflux angular-httpclient
1个回答
0
投票

你没有像你想象的那样返回一系列照片。您需要告诉您的方法使用正确的响应类型。

@GetMapping(value = "/photos", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<Photo> getAllPhoto() {
    return photoService.findAll();
}

这将使您的Angular应用程序正确处理事件,并且更快。

© www.soinside.com 2019 - 2024. All rights reserved.