gpt4 book ai didi

spring-webflux - 刷新react-app/webflux时如何修复 'Status and headers already sent'?

转载 作者:行者123 更新时间:2023-12-05 07:14:37 25 4
gpt4 key购买 nike

我正在按照 webflux-websocket-okta-blog 中给出的步骤进行操作,使用 R2DBCspring-data

在我完成所有步骤并测试中间的预期结果后,我希望有一个 react 网页,其中通过创建脚本插入数据库的记录将直接显示在屏幕上。

这可以通过 reactive websocket 在插入完成时发送消息来实现。这应该导致消息到达 react-app 中的监听器端。消息包含带有访问 token 的 header 。

但是我得到的不是消息,而是:

'IllegalStateException: Status and headers already sent'

当我打开 localhost:3000 时在控制台中(react-app 页面)。该应用程序仍然运行,我可以刷新,但这只会触发 getAll 而不是通过预期的(没有 F5)直接 websocket/消息方式。

我看之前Spring-boot升级到2.1.5后就遇到过这个问题,后来的版本已经解决了。我降级到 2.2.1 但仍然有同样的问题。 我的项目是:github-reactive-spring-tour

我在堆栈跟踪中得到以下信息:

java.lang.IllegalStateException: Status and headers already sent at reactor.netty.http.server.HttpServerOperations.addHeader(HttpServerOperations.java:192) ~[reactor-netty-0.9.4.RELEASE.jar:0.9.4.RELEASE] at org.springframework.http.server.reactive.ReactorServerHttpResponse.applyCookies(ReactorServerHttpResponse.java:97) ~[spring-web-5.2.3.RELEASE.jar:5.2.3.RELEASE] at org.springframework.http.server.reactive.AbstractServerHttpResponse.lambda$doCommit$11(AbstractServerHttpResponse.java:238) ~[spring-web-5.2.3.RELEASE.jar:5.2.3.RELEASE] at reactor.core.publisher.MonoRunnable.subscribe(MonoRunnable.java:49) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE] at reactor.core.publisher.Mono.subscribe(Mono.java:4105) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE] at reactor.core.publisher.FluxConcatArray$ConcatArraySubscriber.onComplete(FluxConcatArray.java:207) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE] at reactor.core.publisher.FluxConcatArray.subscribe(FluxConcatArray.java:80) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE] at reactor.core.publisher.MonoFromFluxOperator.subscribe(MonoFromFluxOperator.java:72) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE] at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE] at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.drain(MonoIgnoreThen.java:153) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE] at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.ignoreDone(MonoIgnoreThen.java:190) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE] at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreInner.onComplete(MonoIgnoreThen.java:240) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE] at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onComplete(Operators.java:1871) ~[reactor-core-3.3.2.RELEASE.jar:3.3.2.RELEASE]

async componentDidMount() {
this.setState({
isLoading: true
});
const headers = {
headers: {
Authorization: 'Bearer ' + await this.props.auth.getAccessToken()
}
};

const response = await fetch('http://localhost:8088/renners', headers);
const data = await response.json();
this.setState({
renners: data,
isLoading: false
});

const socket = new WebSocket('ws://localhost:8088/ws/renners');
socket.addEventListener('message', async(event: any) => {
const renner = JSON.parse(event.data);
this.state.renners.push(renner);
this.setState({
renners: this.state.renners
});
});
}

最佳答案

我遇到了同样的问题。我刚刚将 spring-boot 版本升级到 2.4.0,它开始工作了。

关于spring-webflux - 刷新react-app/webflux时如何修复 'Status and headers already sent'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59856292/

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