From 998f025a8d5313f94b54497bfc731ae961d52bcb Mon Sep 17 00:00:00 2001
From: ZengTao <2773468879@qq.com>
Date: 星期三, 24 七月 2024 08:29:35 +0800
Subject: [PATCH] 消息过长时,websocket分块推送消息 指定钢化改为有一炉正在出片时不允许指定钢化
---
hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/WebSocketServer.java | 26 +++++++++++++++++++++-----
1 files changed, 21 insertions(+), 5 deletions(-)
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/WebSocketServer.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/WebSocketServer.java
index a67c8f2..fa81984 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/WebSocketServer.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/WebSocketServer.java
@@ -43,8 +43,6 @@
public void onOpen(Session session, @PathParam("username") String username) {
this.username = username;
this.session = session;
- this.session.setMaxTextMessageBufferSize(12*1024*1024);
- this.session.setMaxBinaryMessageBufferSize(12*1024*1024);
List<WebSocketServer> webSocketServers = sessionMap.get(username);
if (webSocketServers == null) {
ArrayList<WebSocketServer> arrayListwebserver = new ArrayList<WebSocketServer>();
@@ -98,7 +96,7 @@
*
* @param message 瀹㈡埛绔彂閫佽繃鏉ョ殑娑堟伅
*/
- @OnMessage(maxMessageSize = 5242880)
+ @OnMessage
public void onMessage(String message, Session session, @PathParam("username") String username) {
log.info("鏈嶅姟绔敹鍒扮敤鎴穟sername={}鐨勬秷鎭�:{}", username, message);
JSONObject obj = JSONUtil.parseObj(message);
@@ -121,9 +119,27 @@
public void sendMessage(String message) {
try {
// log.info("鏈嶅姟绔粰瀹㈡埛绔痆{}]鍙戦�佹秷鎭瘂}", this.session.getId(), message);
- this.session.getBasicRemote().sendText(message);
+ if(this.session.isOpen()){
+ int maxChunkSize = 50000; // 瀹氫箟鏈�澶х殑鍒嗗潡澶у皬
+ int length = message.length();
+ int chunks = (int) Math.ceil((double) length / maxChunkSize);
+ //鍒嗗潡鍙戦�佹秷鎭�
+ for (int i = 0; i < chunks; i++) {
+ int startIndex = i * maxChunkSize;
+ int endIndex = Math.min(startIndex + maxChunkSize, length);
+ String chunk = message.substring(startIndex, endIndex);
+
+ // 鍒ゆ柇鏄惁鏄渶鍚庝竴鍧楁秷鎭�
+ boolean isLastChunk = (i == chunks - 1);
+ if(isLastChunk==true){
+ chunk+="<END>";
+ }
+ // 鍙戦�佸垎鍧楁秷鎭紝骞朵紶閫掓槸鍚︽槸鏈�鍚庝竴鍧楁秷鎭殑鏍囪瘑
+ this.session.getBasicRemote().sendText(chunk);
+ }
+ }
} catch (Exception e) {
- log.error("鏈嶅姟绔彂閫佹秷鎭粰瀹㈡埛绔け璐�", e);
+ log.error("鍙戦�佹秷鎭粰瀹㈡埛绔け璐ワ細{}", e.getMessage(), e);
}
}
--
Gitblit v1.8.0