diff --git a/build.gradle b/build.gradle index af43a2c53c1..a14e7f68d31 100644 --- a/build.gradle +++ b/build.gradle @@ -48,7 +48,7 @@ ext { kotlinVersion = "1.2.51" log4jVersion = "2.11.1" nettyVersion = "4.1.29.Final" - reactorVersion = "Bismuth-SR11" + reactorVersion = "Bismuth-BUILD-SNAPSHOT" rxjavaVersion = "1.3.8" rxjavaAdapterVersion = "1.2.1" rxjava2Version = "2.1.17" @@ -152,6 +152,7 @@ configure(allprojects) { project -> repositories { maven { url "https://repo.spring.io/libs-release" } + maven { url "https://repo.spring.io/snapshot" } // Reactor Bismuth snapshots (towards SR13) } dependencies { diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/socket/adapter/ReactorNettyWebSocketSession.java b/spring-webflux/src/main/java/org/springframework/web/reactive/socket/adapter/ReactorNettyWebSocketSession.java index dcf00451c74..81610f19f34 100644 --- a/spring-webflux/src/main/java/org/springframework/web/reactive/socket/adapter/ReactorNettyWebSocketSession.java +++ b/spring-webflux/src/main/java/org/springframework/web/reactive/socket/adapter/ReactorNettyWebSocketSession.java @@ -70,8 +70,7 @@ public class ReactorNettyWebSocketSession @Override public Mono close(CloseStatus status) { - WebSocketFrame closeFrame = new CloseWebSocketFrame(status.getCode(), status.getReason()); - return getDelegate().getOutbound().sendObject(closeFrame).then(); + return getDelegate().getOutbound().sendClose(status.getCode(), status.getReason()); } diff --git a/spring-webflux/src/test/java/org/springframework/web/reactive/socket/WebSocketIntegrationTests.java b/spring-webflux/src/test/java/org/springframework/web/reactive/socket/WebSocketIntegrationTests.java index b952d46cac3..b7c957e6b84 100644 --- a/spring-webflux/src/test/java/org/springframework/web/reactive/socket/WebSocketIntegrationTests.java +++ b/spring-webflux/src/test/java/org/springframework/web/reactive/socket/WebSocketIntegrationTests.java @@ -197,7 +197,10 @@ public class WebSocketIntegrationTests extends AbstractWebSocketIntegrationTests @Override public Mono handle(WebSocketSession session) { - return Flux.never().mergeWith(session.close(CloseStatus.GOING_AWAY)).then(); + return session.send(Flux + .error(new Throwable()) + .onErrorResume(ex -> session.close(CloseStatus.GOING_AWAY)) // SPR-17306 (nested close) + .cast(WebSocketMessage.class)); } }