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); } }