From cc761d5e0a76966df0b1b35fdd9b40387c92a7c0 Mon Sep 17 00:00:00 2001 From: Domenico Briganti Date: Sun, 22 Sep 2024 23:59:19 +0200 Subject: [PATCH] Add configuration for WebSocket MaxFrameSize and MaxMessageSize --- .../vertx/http/runtime/HttpConfiguration.java | 6 ++++ .../vertx/http/runtime/VertxHttpRecorder.java | 3 ++ .../http/runtime/WebsocketServerConfig.java | 32 +++++++++++++++++++ 3 files changed, 41 insertions(+) create mode 100644 extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/WebsocketServerConfig.java diff --git a/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/HttpConfiguration.java b/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/HttpConfiguration.java index 2214f37912b70..1dc81ee6a927b 100644 --- a/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/HttpConfiguration.java +++ b/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/HttpConfiguration.java @@ -310,6 +310,12 @@ public class HttpConfiguration { @ConfigDocSection public ProxyConfig proxy; + /** + * WebSocket Server configuration. + */ + @ConfigDocSection + public WebsocketServerConfig websocketServer; + public int determinePort(LaunchMode launchMode) { return launchMode == LaunchMode.TEST ? testPort : port; } diff --git a/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/VertxHttpRecorder.java b/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/VertxHttpRecorder.java index 4de23de77b0d1..09198e680ffd5 100644 --- a/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/VertxHttpRecorder.java +++ b/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/VertxHttpRecorder.java @@ -1020,6 +1020,9 @@ private static HttpServerOptions createHttpServerOptions( HttpServerOptionsUtils.applyCommonOptions(options, buildTimeConfig, httpConfiguration, websocketSubProtocols); + httpConfiguration.websocketServer.maxFrameSize.ifPresent(s -> options.setMaxWebSocketFrameSize(s)); + httpConfiguration.websocketServer.maxMessageSize.ifPresent(s -> options.setMaxWebSocketMessageSize(s)); + return options; } diff --git a/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/WebsocketServerConfig.java b/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/WebsocketServerConfig.java new file mode 100644 index 0000000000000..36437308a3f97 --- /dev/null +++ b/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/WebsocketServerConfig.java @@ -0,0 +1,32 @@ +package io.quarkus.vertx.http.runtime; + +import java.util.Optional; + +import io.quarkus.runtime.annotations.ConfigGroup; +import io.quarkus.runtime.annotations.ConfigItem; + +/** + * Configure the Vert.X HTTP Server for WebSocker Server connection. + */ +@ConfigGroup +public class WebsocketServerConfig { + + /** + * The maximum amount of data that can be sent in a single frame. + * + * Messages larger than this must be broken up into continuation frames. + * + * Default 65536 (from HttpServerOptions of Vert.X HttpServerOptions) + */ + @ConfigItem + public Optional maxFrameSize; + + /** + * The maximum WebSocket message size. + * + * Default 262144 (from HttpServerOptions of Vert.X HttpServerOptions) + */ + @ConfigItem + public Optional maxMessageSize; + +}