java - 使用 IP 进行本地和远程调用时,Spring Web-Flux 服务器发送事件不起作用
问题描述
我有两个简单的控制器:
@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());
}
调用第一个时,它按预期工作(本地和远程使用不同机器的 ip)。但是当调用第二个时,它使用本地主机按预期工作,例如:http://localhost:65465/stream-flux 但是当使用它的 ip 部署到另一台机器时它不能远程工作。我什至检查了一下,当使用 127.0.0.1 时它在本地无法正常工作,这很奇怪.. 所有不适用于 web-flux 的东西,都可以通过 simple-get API 正常工作,所以我排除了连接问题.. 可以在任何地方都找不到任何关于它的东西.. 对此有任何想法将不胜感激。
解决方案
感谢所有有兴趣提供帮助的人。经过进一步调查,我们发现了 RC,它实际上与 code/Spring-web-flux 无关。使用 ip 地址或远程调用它时,请求一直处于挂起状态,直到达到服务器上定义的超时。在 Windows 机器上使用 netstat -ano | 在 cmd 上 findstr 8080 我们能够找到正在使用的端口及其状态。当使用本地主机时,对 api 的第一次调用会分配一个额外的端口来建立一个连接,该连接将为以后的服务器发送事件保持打开状态,我们可以看到正在侦听该新端口的进程的 PID 是浏览器。使用 IP 地址时。同样的事情正在发生,但现在正在侦听新端口的进程实际上是防病毒程序。
更多细节:
JavaScript EventSource SSE 未在浏览器中触发
使用 https 应该可以解决问题。
谢谢
推荐阅读
- python - 输入功能在 Jupyter Notebook 中未按预期工作
- sql - 改进数据表参考?“搜索”工具上的持续运行时错误
- python - 没有这样的表:django 中的操作错误
- python - 装饰器包装器缺少一个参数参数
- reactjs - 如何在 Monaco 编辑器中添加自定义 UI/智能感知?
- android - 如何从通知中打开特定目录的文件管理器?
- django - 在同一项目中的 django 应用程序之间交换数据
- javascript - 如何在Vue中隐藏返回false布尔值的每个元素
- python - 从 RGBD 创建点云的 Open3d 问题
- svg - 自定义绘图旋转 SVG 到 Leaflet 地图