Java Project ReactorFlux
API 용 Angular 4 클라이언트는 어떻게 만듭니 까? 아래 샘플에는 두 개의 API가 있습니다. Mono
API; 및 Flux
API 둘 다 curl
에서 작동합니다. Angular 4 (4.1.2)에서는 Mono
API 만 작동합니다. Angular 4를 Flux
API와 함께 사용하는 방법에 대한 아이디어가 있습니까? 롬복 에드 이벤트와Spring Boot 2 Reactor Flux API의 각 클라이언트
@SpringBootApplication
@RestController
public class ReactiveServiceApplication {
@CrossOrigin
@GetMapping("/events/{id}")
public Mono<Event> eventById(@PathVariable long id) {
return Mono.just(new Event(id, LocalDate.now()));
}
@CrossOrigin
@GetMapping(value = "/events", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<Event> events() {
Flux<Event> eventFlux = Flux.fromStream(
Stream.generate(
()->new Event(System.currentTimeMillis(), LocalDate.now()))
);
Flux<Long> durationFlux = Flux.interval(Duration.ofSeconds(1));
return Flux.zip(eventFlux, durationFlux).map(Tuple2::getT1);
}
public static void main(String[] args) {
SpringApplication.run(ReactiveServiceApplication.class);
}
}
:
@Data
@AllArgsConstructor
public class Event {
private final long id;
private final LocalDate when;
}
이 반응 API를에서 작업 여기
는Mono
API와 사소한 봄 부팅 2.0.0-SNAPSHOT 응용 프로그램과
Flux
API입니다 나는 예상대로 말아 올릴 것이다 :
[email protected]:~/src> curl -s http://localhost:8080/events/123
{"id":123,"when":{"year":2017,"month":"MAY","monthValue":5,"dayOfMonth":15,"dayOfWeek":"MONDAY","era":"CE","dayOfYear":135,"leapYear":false,"chronology":{"calendarType":"iso8601","id":"ISO"}}}
그리고 non-termi 이 없습 플럭스 API :
[email protected]:~/src> curl -s http://localhost:8080/events
data:{"id":1494887783347,"when":{"year":2017,"month":"MAY","monthValue":5,"dayOfMonth":15,"dayOfWeek":"MONDAY","era":"CE","dayOfYear":135,"leapYear":false,"chronology":{"calendarType":"iso8601","id":"ISO"}}}
data:{"id":1494887784348,"when":{"year":2017,"month":"MAY","monthValue":5,"dayOfMonth":15,"dayOfWeek":"MONDAY","era":"CE","dayOfYear":135,"leapYear":false,"chronology":{"calendarType":"iso8601","id":"ISO"}}}
data:{"id":1494887785347,"when":{"year":2017,"month":"MAY","monthValue":5,"dayOfMonth":15,"dayOfWeek":"MONDAY","era":"CE","dayOfYear":135,"leapYear":false,"chronology":{"calendarType":"iso8601","id":"ISO"}}}
...
RxJS과의 유사 사소한 각도 4 클라이언트 :
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit, OnDestroy {
title = 'app works!';
event: Observable<Event>;
subscription: Subscription;
constructor(
private _http: Http
) {
}
ngOnInit() {
this.subscription = this._http
.get("http://localhost:8080/events/322")
.map(response => response.json())
.subscribe(
e => {
this.event = e;
}
);
}
ngOnDestroy() {
this.subscription.unsubscribe();
}
}
가 Mono
API에 대해 잘 작동 :
"http://localhost:8080/events/322"
하지만 Flux
API :
"http://localhost:8080/events"
curl
과 달리 이벤트 처리기를 트리거하지 않습니다.
I ' 특히 "투표중인 내용이 명확하지 않아 투표 마감 시간에 가까운 유권자에게 명확히 밝히고 싶습니다."- 의견에 불명확 한 점을 이해하도록 도와주십시오. –
아무도 해결책이 없다. 우리가 필요로하는 것은 새로운 버전의 Angular입니다! – ieXcept