From eb7ac93e72a68c90e01c0e5b01ac6160f7cf3ca6 Mon Sep 17 00:00:00 2001 From: JianYu Zheng <2375294554@qq.com> Date: Mon, 21 Jul 2025 16:07:56 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dmcp=E5=B7=A5=E5=85=B7?= =?UTF-8?q?=E5=A4=AA=E5=A4=9A=E4=BC=9A=E8=8E=B7=E5=8F=96=E4=B8=8D=E5=88=B0?= =?UTF-8?q?=E5=86=85=E5=AE=B9=E7=9A=84bug=20--WebSocketClientManager.java?= =?UTF-8?q?=201.=E6=9E=84=E5=BB=BAwebsocket=E5=AF=B9=E8=B1=A1=E7=9A=84?= =?UTF-8?q?=E6=97=B6=E5=80=99=EF=BC=8C=E6=B7=BB=E5=8A=A0=E5=8F=AF=E4=BB=A5?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E7=BC=93=E5=86=B2=E5=8C=BA=E5=A4=A7=E5=B0=8F?= =?UTF-8?q?=202.=E6=96=AD=E5=BC=80=E8=BF=9E=E6=8E=A5=E7=9A=84=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E6=B7=BB=E5=8A=A0=E6=96=AD=E5=BC=80=E5=8E=9F=E5=9B=A0?= =?UTF-8?q?=E7=9A=84=E5=86=85=E5=AE=B9=20--AgentMcpAccessPointServiceImpl.?= =?UTF-8?q?java=201.=E8=AE=BE=E7=BD=AE=E6=AF=8F=E4=B8=AAwebsocket=E7=9A=84?= =?UTF-8?q?=E7=BC=93=E5=86=B2=E5=8C=BA=E4=B8=BA1m=EF=BC=8Cbug=E5=8E=9F?= =?UTF-8?q?=E5=9B=A0=EF=BC=9A=E7=BC=93=E5=AD=98=E5=8C=BA=E5=A4=AA=E5=B0=8F?= =?UTF-8?q?=EF=BC=8C=E6=95=B0=E6=8D=AE=E9=87=8F=E5=A4=AA=E5=A4=A7=EF=BC=8C?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=E7=9B=B4=E6=8E=A5=E6=96=AD=E5=BC=80=E8=BF=9E?= =?UTF-8?q?=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/AgentMcpAccessPointServiceImpl.java | 1 + .../modules/sys/utils/WebSocketClientManager.java | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/main/manager-api/src/main/java/xiaozhi/modules/agent/service/impl/AgentMcpAccessPointServiceImpl.java b/main/manager-api/src/main/java/xiaozhi/modules/agent/service/impl/AgentMcpAccessPointServiceImpl.java index bc982f51..d1fe5810 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/agent/service/impl/AgentMcpAccessPointServiceImpl.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/agent/service/impl/AgentMcpAccessPointServiceImpl.java @@ -65,6 +65,7 @@ public class AgentMcpAccessPointServiceImpl implements AgentMcpAccessPointServic try (WebSocketClientManager client = WebSocketClientManager.build( new WebSocketClientManager.Builder() .uri(wsUrl) + .bufferSize(1024 * 1024) .connectTimeout(8, TimeUnit.SECONDS) .maxSessionDuration(10, TimeUnit.SECONDS))) { diff --git a/main/manager-api/src/main/java/xiaozhi/modules/sys/utils/WebSocketClientManager.java b/main/manager-api/src/main/java/xiaozhi/modules/sys/utils/WebSocketClientManager.java index d7171ae7..d4203c75 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/sys/utils/WebSocketClientManager.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/sys/utils/WebSocketClientManager.java @@ -86,10 +86,14 @@ public class WebSocketClientManager implements Closeable { if (sess == null || !sess.isOpen()) { throw new IOException("握手失败或会话未打开"); } + // 设置缓冲区 + sess.setTextMessageSizeLimit(b.bufferSize); + sess.setBinaryMessageSizeLimit(b.bufferSize); ws.session = sess; return ws; } + /** * 发送 Text */ @@ -308,10 +312,11 @@ public class WebSocketClientManager implements Closeable { if (stopWatch.isRunning()) { stopWatch.stop(); } - log.info("ws连接关闭, 目标URI: {}, 关闭时间: {}, 连接总时长: {}s", + log.info("ws连接关闭, 目标URI: {}, 关闭时间: {}, 连接总时长: {}s,断开原因:{}", targetUri, DateUtils.getDateTimeNow(DateUtils.DATE_TIME_MILLIS_PATTERN), - DateUtils.millsToSecond(stopWatch.getTotalTimeMillis())); + DateUtils.millsToSecond(stopWatch.getTotalTimeMillis()),status); } + } public static class Builder { @@ -321,6 +326,7 @@ public class WebSocketClientManager implements Closeable { private long maxSessionDuration = 5; // 最大连线时间,默认5秒 private TimeUnit maxSessionDurationUnit = TimeUnit.SECONDS; // 最大连线时间单位 private int queueCapacity = 100; // 消息队列容量 + private int bufferSize = 8 * 1024; //默认 8kb private WebSocketHttpHeaders headers; // 请求头 /** @@ -352,6 +358,10 @@ public class WebSocketClientManager implements Closeable { this.queueCapacity = c; return this; } + public Builder bufferSize(int c) { + this.bufferSize = c; + return this; + } public WebSocketClientManager build() throws InterruptedException, ExecutionException, TimeoutException, IOException {