From 283b6244b1f70ef28f3c108389d0a4437c9ecd5d Mon Sep 17 00:00:00 2001 From: xupei Date: Tue, 1 Oct 2024 10:29:06 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B6=88=E6=81=AF=E6=8E=A8=E9=80=81=E8=BF=9E?= =?UTF-8?q?=E6=8E=A5=E5=85=B3=E9=97=AD=E6=97=B6=E9=81=BF=E5=85=8D=E6=8A=A5?= =?UTF-8?q?=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/websocket/NotificationConnection.java | 14 +++++++++++++- .../da/service/impl/MessageCenterServiceImpl.java | 2 +- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/ai/da/common/websocket/NotificationConnection.java b/src/main/java/com/ai/da/common/websocket/NotificationConnection.java index 490acdb2..7dc7c7da 100644 --- a/src/main/java/com/ai/da/common/websocket/NotificationConnection.java +++ b/src/main/java/com/ai/da/common/websocket/NotificationConnection.java @@ -87,7 +87,19 @@ public class NotificationConnection { // 判断用户ID与当前的Key相等 if (userId.equals(key)) { log.info("私发消息 【给用户】 :{}发送消息【{}】", key, message); // 打印 - webSocket.session.getBasicRemote().sendText(message); // 则发送给当前的用户即可 + if (webSocket.session.isOpen()){ + // 避免因为网络问题或其他原因导致连接突然关闭而报错 + try { + webSocket.session.getBasicRemote().sendText(message); // 则发送给当前的用户即可 + } catch (IOException e) { + log.error("Failed to send message to session {}: {}", webSocket.session.getId(), e.getMessage()); + // 这里可以选择移除关闭的 session + websockets.remove(entry.getKey()); + } + }else { + log.info("连接已关闭,sessionId:{}, userId:{}", webSocket.session.getId(), key); + websockets.remove(entry.getKey()); + } } } } diff --git a/src/main/java/com/ai/da/service/impl/MessageCenterServiceImpl.java b/src/main/java/com/ai/da/service/impl/MessageCenterServiceImpl.java index 47b169c1..9c40597c 100644 --- a/src/main/java/com/ai/da/service/impl/MessageCenterServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/MessageCenterServiceImpl.java @@ -196,7 +196,7 @@ public class MessageCenterServiceImpl extends ServiceImpl