From 5af50a92df7bcefa0bf05e7a0688a0ff7b958da9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=B7=E6=88=90=E4=BC=9F?= Date: Tue, 22 Oct 2024 12:40:22 +0800 Subject: [PATCH] =?UTF-8?q?websocket=E5=B9=B6=E5=8F=91=E5=8F=91=E9=80=81?= =?UTF-8?q?=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/das/modules/node/handler/NodeMessageHandler.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/das/src/main/java/com/das/modules/node/handler/NodeMessageHandler.java b/das/src/main/java/com/das/modules/node/handler/NodeMessageHandler.java index 67e02fad..1bbcfa55 100644 --- a/das/src/main/java/com/das/modules/node/handler/NodeMessageHandler.java +++ b/das/src/main/java/com/das/modules/node/handler/NodeMessageHandler.java @@ -15,6 +15,7 @@ import org.springframework.beans.factory.BeanFactoryUtils; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.springframework.web.socket.*; +import org.springframework.web.socket.handler.ConcurrentWebSocketSessionDecorator; import org.springframework.web.socket.handler.TextWebSocketHandler; import java.util.concurrent.*; @@ -24,7 +25,7 @@ import java.util.concurrent.*; public class NodeMessageHandler extends TextWebSocketHandler { public static final Long HEARTBEAT_TIMEOUT = 1000 * 60 * 1L; - private ConcurrentHashMap onlineSessions = new ConcurrentHashMap<>(16); + private ConcurrentHashMap onlineSessions = new ConcurrentHashMap<>(16); private DataService dataService; @Override @@ -43,7 +44,7 @@ public class NodeMessageHandler extends TextWebSocketHandler { } else { log.info("IP: {} 准许连接, NodeId:{}, Version: {}, sessionId: {}", remoteIp, nodeId, version, session.getId()); - onlineSessions.put(nodeId, session); + onlineSessions.put(nodeId, new ConcurrentWebSocketSessionDecorator(session, 5 * 1000, 2 * 1024 * 1024)); } } @@ -108,7 +109,7 @@ public class NodeMessageHandler extends TextWebSocketHandler { */ @Scheduled(cron = "0/15 * * * * ?") public void sendHeartbeat(){ - for (WebSocketSession session : onlineSessions.values()) { + for (ConcurrentWebSocketSessionDecorator session : onlineSessions.values()) { //判断心跳是否超时,超时则主动断开连接 Long lastPongTime = (Long) session.getAttributes().get(NodeConstant.LAST_PONG_TIME); if (lastPongTime != null && ((System.currentTimeMillis() - lastPongTime) > HEARTBEAT_TIMEOUT)){ @@ -144,7 +145,7 @@ public class NodeMessageHandler extends TextWebSocketHandler { * @param nodeId */ public void sendActionMessage(Long nodeId, TerminalMessage message){ - WebSocketSession session = onlineSessions.get(nodeId); + ConcurrentWebSocketSessionDecorator session = onlineSessions.get(nodeId); if (session != null){ try { session.sendMessage(new TextMessage(message.toJsonString()));