From 836fc04a265e60b897eb009d3ae5d1d172356b61 Mon Sep 17 00:00:00 2001 From: PIGCLOUD Date: Thu, 14 May 2026 14:13:54 +0800 Subject: [PATCH] =?UTF-8?q?refactor(pigx-common-websocket):=20=E4=BC=98?= =?UTF-8?q?=E5=8C=96=20WebSocket=20=E7=BC=93=E5=86=B2=E5=8C=BA=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E5=B9=B6=E7=A7=BB=E9=99=A4=20Undertow=20=E4=BE=9D?= =?UTF-8?q?=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/WebSocketAutoConfiguration.java | 18 +++++++++++++++++- .../websocket/config/WebSocketProperties.java | 12 +++++++++++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/pigx-common/pigx-common-websocket/src/main/java/com/pig4cloud/pigx/common/websocket/config/WebSocketAutoConfiguration.java b/pigx-common/pigx-common-websocket/src/main/java/com/pig4cloud/pigx/common/websocket/config/WebSocketAutoConfiguration.java index 3dd1b3f91..6f9d310c2 100644 --- a/pigx-common/pigx-common-websocket/src/main/java/com/pig4cloud/pigx/common/websocket/config/WebSocketAutoConfiguration.java +++ b/pigx-common/pigx-common-websocket/src/main/java/com/pig4cloud/pigx/common/websocket/config/WebSocketAutoConfiguration.java @@ -11,13 +11,15 @@ import org.springframework.web.socket.WebSocketHandler; import org.springframework.web.socket.config.annotation.EnableWebSocket; import org.springframework.web.socket.config.annotation.WebSocketConfigurer; import org.springframework.web.socket.server.HandshakeInterceptor; +import org.springframework.web.socket.server.standard.ServletServerContainerFactoryBean; import java.util.List; /** - * websocket自动配置 + * WebSocket 自动配置,注册端点、容器参数和消息处理器。 * * @author Yakir + * @date 2026-05-14 */ @Import(WebSocketHandlerConfig.class) @EnableWebSocket @@ -37,6 +39,20 @@ public class WebSocketAutoConfiguration { .addInterceptors(handshakeInterceptor.toArray(new HandshakeInterceptor[0])); } + /** + * 配置 Servlet 容器的 WebSocket 消息缓冲区大小。允许通过注册自定义 Bean 覆盖默认配置。 + * + * @return 配置了文本和二进制消息缓冲区上限的容器工厂 Bean + */ + @Bean + @ConditionalOnMissingBean + public ServletServerContainerFactoryBean servletServerContainerFactoryBean() { + ServletServerContainerFactoryBean container = new ServletServerContainerFactoryBean(); + container.setMaxTextMessageBufferSize(webSocketProperties.getMaxTextMessageBufferSize()); + container.setMaxBinaryMessageBufferSize(webSocketProperties.getMaxBinaryMessageBufferSize()); + return container; + } + /** * 初始化时将所有的jsonMessageHandler注册到JsonMessageHandlerHolder中 */ diff --git a/pigx-common/pigx-common-websocket/src/main/java/com/pig4cloud/pigx/common/websocket/config/WebSocketProperties.java b/pigx-common/pigx-common-websocket/src/main/java/com/pig4cloud/pigx/common/websocket/config/WebSocketProperties.java index 3c78793d2..3a3236cee 100644 --- a/pigx-common/pigx-common-websocket/src/main/java/com/pig4cloud/pigx/common/websocket/config/WebSocketProperties.java +++ b/pigx-common/pigx-common-websocket/src/main/java/com/pig4cloud/pigx/common/websocket/config/WebSocketProperties.java @@ -53,6 +53,16 @@ public class WebSocketProperties { /** * 配置的缓冲区大小限制 */ - private Integer sendBufferSizeLimit = 64000; + private Integer sendBufferSizeLimit = 6400000; + + /** + * 接收文本消息缓冲区大小限制 + */ + private Integer maxTextMessageBufferSize = 6400000; + + /** + * 接收二进制消息缓冲区大小限制 + */ + private Integer maxBinaryMessageBufferSize = 6400000; }