From fed00218fbc553322611c78ab730eea53278649b Mon Sep 17 00:00:00 2001 From: acgist <289547414@qq.com> Date: Fri, 6 Jan 2023 17:03:16 +0800 Subject: [PATCH] =?UTF-8?q?[*]=20=E4=BC=98=E5=8C=96=E7=BA=BF=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../signal/client/ClientSessionManager.java | 1 + .../client/websocket/WebSocketSession.java | 16 +++++++++------- .../signal/client/websocket/WebSocketSignal.java | 16 +++++++++------- 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/ClientSessionManager.java b/taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/ClientSessionManager.java index b7f8d1e..2ba28c0 100644 --- a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/ClientSessionManager.java +++ b/taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/ClientSessionManager.java @@ -147,6 +147,7 @@ public class ClientSessionManager { */ public void close(AutoCloseable instance) { final ClientSession session = this.session(instance); + // TODO:如果出现异常可以提前移除 try { if(session != null) { session.close(); diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/websocket/WebSocketSession.java b/taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/websocket/WebSocketSession.java index 69220ee..ac7495b 100644 --- a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/websocket/WebSocketSession.java +++ b/taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/websocket/WebSocketSession.java @@ -24,14 +24,16 @@ public class WebSocketSession extends ClientSessionAdapter { @Override public void push(Message message) { - try { - if(this.instance.isOpen()) { - this.instance.getBasicRemote().sendText(message.toString()); - } else { - log.error("会话已经关闭:{}", this.instance); + synchronized (this.instance) { + try { + if(this.instance.isOpen()) { + this.instance.getBasicRemote().sendText(message.toString()); + } else { + log.error("会话已经关闭:{}", this.instance); + } + } catch (Exception e) { + log.error("WebSocket发送消息异常:{}", message, e); } - } catch (Exception e) { - log.error("WebSocket发送消息异常:{}", message, e); } } diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/websocket/WebSocketSignal.java b/taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/websocket/WebSocketSignal.java index f658021..a1c135c 100644 --- a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/websocket/WebSocketSignal.java +++ b/taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/websocket/WebSocketSignal.java @@ -70,14 +70,16 @@ public class WebSocketSignal { * @param message 消息 */ private void push(Session session, Message message) { - try { - if(session.isOpen()) { - session.getBasicRemote().sendText(message.toString()); - } else { - log.error("会话已经关闭:{}", session); + synchronized (session) { + try { + if(session.isOpen()) { + session.getBasicRemote().sendText(message.toString()); + } else { + log.error("会话已经关闭:{}", session); + } + } catch (Exception e) { + log.error("推送消息异常:{}", message, e); } - } catch (Exception e) { - log.error("推送消息异常:{}", message, e); } }