gpt4 book ai didi

angular - 如何使服务器发送的事件(SSE)通过Zuul代理spring-boot 2.1.1工作

转载 作者:行者123 更新时间:2023-12-02 12:47:28 40 4
gpt4 key购买 nike

我在通过zuul反向代理通过SSE工作时遇到一些问题

我的设置:

Spring boot version: 2.1.1.RELEASE
Spring cloud dependencies: Greenwich.RC1
Angular-cli: Angular 7
Kotlin: 1.3.11
os: Linux

我有一个使用SSE的小型休息服务
@SpringBootApplication
@RestController
@CrossOrigin("http://localhost:19195")
class RestApplication {
private final val processor = DirectProcessor.create<Int>().serialize()
private final val sink = processor.sink()
private final val counter = AtomicInteger()

@GetMapping("/stream")
fun stream(): Flux<ServerSentEvent<Int>> {
println("Stream connected")
return processor.map { n -> ServerSentEvent.builder<Int>(n).build() }
}

@GetMapping("/increment")
fun sink() {
sink.next(counter.incrementAndGet())
}

}

如果我的EventSource从我的 Angular 服务直接连接到它,则可以正常工作:
const sse = new EventSource('http://localhost:8080/stream');
sse.onopen = (event) => {
console.log('OnOpen ' + event);
};
sse.onmessage = (event) => {
console.log(event);
sse.onerror = (error) => {
console.log(error);
};

如果我命中了/ increment端点,则该服务会接收到具有递增值的sse事件。

现在使用这个zuul配置:
zuul:
sensitive-headers:
routes:
rest:
path: /rest/**
url: http://192.168.75.90:8080
add-proxy-headers: true
add-host-header: true

Angular服务已更新为通过代理运行:
const sse = new EventSource('rest/stream');
sse.onopen = (event) => {
console.log('OnOpen ' + event);
};
sse.onmessage = (event) => {
console.log(event);

};
sse.onerror = (error) => {
console.log(error);
};

现在我的 Angular 服务连接到流,等待默认的zuul超时(10秒),然后返回406并重新连接。那就是如果我没有数据。

如果我在接收器中有数据,它会连接到sse流,只要我将数据推送到流上,什么都不会发生。当我停止推送数据时,EventSource等待zuul超时(10秒),然后接收流中的所有数据并断开连接/重新连接。

我知道zuul 1.x不支持SSE,但是我希望zuul与Spring Boot 2.1.1 bundle 在一起。

有人知道吗

最佳答案

问题是,即使您使用的是Springboot版本2.x,您也正在使用Zuul1.x。我遇到了同样的问题,似乎Spring Cloud Netflix当前和将来都将不支持Zuul2.x。因此,当您使用Spring Cloud环境时,建议您切换到spring-cloud-gateway。我在SSE上使用它,并对当前的解决方案感到满意。另一个选择是直接切换到Zuul 2.0。

关于angular - 如何使服务器发送的事件(SSE)通过Zuul代理spring-boot 2.1.1工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53835804/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com