Java 使用IP进行本地和远程调用时,SpringWebFlux服务器发送的事件不起作用

Java 使用IP进行本地和远程调用时,SpringWebFlux服务器发送的事件不起作用,java,spring,spring-webflux,server-sent-events,emitter,Java,Spring,Spring Webflux,Server Sent Events,Emitter,我有两个简单的控制器: @GetMapping(value = "/simple-get") public String simpleGet() { return "simple Get"; } @GetMapping(path = "/stream-flux", produces = MediaType.TEXT_EVENT_STREAM_VALUE) public Flux<String> streamFlu

我有两个简单的控制器:

@GetMapping(value = "/simple-get")
public String simpleGet() {
    return "simple Get";

}

@GetMapping(path = "/stream-flux", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<String> streamFlux() {
    return Flux.interval(Duration.ofSeconds(2))
            .map(sequence -> "Flux - " + LocalTime.now().toString());
}
@GetMapping(value=“/simple get”)
公共字符串simpleGet(){
返回“简单获取”;
}
@GetMapping(path=“/stream flux”,products=MediaType.TEXT\u EVENT\u stream\u VALUE)
公共流量(){
返回通量间隔(持续时间秒(2))
.map(sequence->“Flux-”+LocalTime.now().toString());
}
当调用第一个时,它按预期工作(本地和远程使用不同机器的ip)。但是,当调用第二个时,它会使用localhost正常工作,例如: http://localhost:65465/stream-flux,但当使用其ip部署到另一台机器时,它不能远程工作。我甚至检查过,当使用127.0.0.1时,它在本地不起作用,这很奇怪。。
所有不适用于WebFlux的东西,在simple get API中都能正常工作,所以我排除了连接问题。在任何地方都找不到关于它的任何东西。。如果您有任何想法,我们将不胜感激。

感谢所有有兴趣提供帮助的人。在进一步调查之后,我们发现了RC,它实际上与代码/弹簧腹板流量无关。 当使用ip地址或远程调用它时,请求被挂起,直到达到服务器上定义的超时。 在windows计算机上,在cmd上使用netstat-ano | findstr 8080 我们能够找到正在使用的端口及其状态。 当使用本地主机时,对api的第一次调用将分配一个额外的端口来建立一个连接,该连接将在以后服务器发送的事件中保持打开状态,我们可以看到正在侦听该新端口的进程的PID是浏览器。 当使用ip地址时。同样的事情正在发生,但现在监听新端口的过程实际上是反病毒。 Sophos antivirus具有web保护功能,它将SSE视为恶意下载线程,因此它会等待http响应到达以进行扫描。在SSE中,只要连接打开,它就不会到达

更多详情:

使用https应该可以解决这个问题


谢谢

谢谢Stav,你还记得你在客户端的请求中添加了什么标题吗?你的日志上说?本地(OSX,SB 2.3.4.RELEASE),适用于两种情况:curl localhost:8080/stream flux curl 127.0.0.1:8080/stream flux你可以添加一些调试(即
.doOnXXX
)?谢谢你的评论,激活所有相关组件的调试级别,并且所有内容看起来都有效,简单的get调用和stream-flux调用之间没有区别,但是经过更多的故障排除之后,我找到了根本原因!我将发表并回答这个问题。。谢谢你的关心