diff --git a/src/main/java/io/vertx/core/http/ServerWebSocket.java b/src/main/java/io/vertx/core/http/ServerWebSocket.java index fe5cc8827..47105b73d 100644 --- a/src/main/java/io/vertx/core/http/ServerWebSocket.java +++ b/src/main/java/io/vertx/core/http/ServerWebSocket.java @@ -98,12 +98,6 @@ public interface ServerWebSocket extends WebSocketBase { @Nullable String query(); - /** - * @return the headers in the WebSocket handshake - */ - @CacheReturn - MultiMap headers(); - /** * Accept the WebSocket and terminate the WebSocket handshake. *

diff --git a/src/main/java/io/vertx/core/http/WebSocketBase.java b/src/main/java/io/vertx/core/http/WebSocketBase.java index a0245e1e9..9239cfc56 100644 --- a/src/main/java/io/vertx/core/http/WebSocketBase.java +++ b/src/main/java/io/vertx/core/http/WebSocketBase.java @@ -101,11 +101,11 @@ public interface WebSocketBase extends ReadStream, WriteStream { String closeReason(); /** - * Returns the HTTP response headers during the websocket connection handler. + * Returns the HTTP headers when the WebSocket is first obtained in the handler. *

- * After the completion handler callback has completed the response headers will be {@code null} + * The headers will be {@code null} on subsequent interactions. * - * @return the response headers + * @return the headers */ MultiMap headers(); diff --git a/src/main/java/io/vertx/core/http/impl/ServerWebSocketImpl.java b/src/main/java/io/vertx/core/http/impl/ServerWebSocketImpl.java index 5a13ac954..69bebbf00 100644 --- a/src/main/java/io/vertx/core/http/impl/ServerWebSocketImpl.java +++ b/src/main/java/io/vertx/core/http/impl/ServerWebSocketImpl.java @@ -51,7 +51,6 @@ public class ServerWebSocketImpl extends WebSocketImplBase private final String path; private final String query; private final WebSocketServerHandshaker handshaker; - private final MultiMap headers; private HttpServerRequestImpl request; private Integer status; private Promise handshakePromise; @@ -68,9 +67,10 @@ public class ServerWebSocketImpl extends WebSocketImplBase this.uri = request.uri(); this.path = request.path(); this.query = request.query(); - this.headers = request.headers(); this.request = request; this.handshaker = handshaker; + + headers(request.headers()); } @Override @@ -88,11 +88,6 @@ public class ServerWebSocketImpl extends WebSocketImplBase return query; } - @Override - public MultiMap headers() { - return headers; - } - @Override public void accept() { if (tryHandshake(SC_SWITCHING_PROTOCOLS) != Boolean.TRUE) { diff --git a/src/test/java/io/vertx/core/http/WebSocketTest.java b/src/test/java/io/vertx/core/http/WebSocketTest.java index 43f8371c4..1840ef3aa 100644 --- a/src/test/java/io/vertx/core/http/WebSocketTest.java +++ b/src/test/java/io/vertx/core/http/WebSocketTest.java @@ -1057,34 +1057,26 @@ public class WebSocketTest extends VertxTestBase { @Test // Test server accepting no compression - public void testConnectWithWebsocketComressionDisabled() throws Exception { - String path = "/some/path"; - Buffer buff = Buffer.buffer("AAA"); + public void testConnectWithWebSocketCompressionDisabled() throws Exception { + String path = "/some/path"; + Buffer buff = Buffer.buffer("AAA"); - // Server should have basic compression enabled by default, - // client needs to ask for it - server = vertx.createHttpServer(new HttpServerOptions() - .setPort(DEFAULT_HTTP_PORT) - .setPerFrameWebsocketCompressionSupported(false) - .setPerMessageWebsocketCompressionSupported(false) - ).websocketHandler(ws -> { - - assertEquals("upgrade", ws.headers().get("Connection")); - assertNull(ws.headers().get("sec-websocket-extensions")); - - ws.writeFrame(WebSocketFrame.binaryFrame(buff, true)); - }); - - - server.listen(ar -> { - assertTrue(ar.succeeded()); - - HttpClientOptions options = new HttpClientOptions(); - - client = vertx.createHttpClient(options); - - client.webSocket(DEFAULT_HTTP_PORT, DEFAULT_HTTP_HOST, path, onSuccess(ws -> { + // Server should have basic compression enabled by default, + // client needs to ask for it + server = vertx.createHttpServer(new HttpServerOptions() + .setPort(DEFAULT_HTTP_PORT) + .setPerFrameWebsocketCompressionSupported(false) + .setPerMessageWebsocketCompressionSupported(false) + ).websocketHandler(ws -> { + assertEquals("upgrade", ws.headers().get("Connection")); + assertNull(ws.headers().get("sec-websocket-extensions")); + ws.writeFrame(WebSocketFrame.binaryFrame(buff, true)); + }); + server.listen(onSuccess(s -> { + HttpClientOptions options = new HttpClientOptions(); + client = vertx.createHttpClient(options); + client.webSocket(DEFAULT_HTTP_PORT, DEFAULT_HTTP_HOST, path, onSuccess(ws -> { final Buffer received = Buffer.buffer(); ws.handler(data -> { received.appendBuffer(data); @@ -1095,8 +1087,8 @@ public class WebSocketTest extends VertxTestBase { } }); })); - }); - await(); + })); + await(); } private void testValidSubProtocol(WebsocketVersion version) throws Exception {