瀏覽代碼

广播模式,ws消息推送增加判空逻辑

wangqi49 5 月之前
父節點
當前提交
c33c956a11
共有 1 個文件被更改,包括 6 次插入2 次删除
  1. 6 2
      src/main/java/com/webchat/service/listener/RedisChatMessageListener.java

+ 6 - 2
src/main/java/com/webchat/service/listener/RedisChatMessageListener.java

@@ -18,6 +18,7 @@ import org.springframework.data.redis.connection.MessageListener;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Component;
 
+import javax.websocket.Session;
 import java.io.IOException;
 import java.util.Date;
 import java.util.HashSet;
@@ -136,8 +137,11 @@ public class RedisChatMessageListener implements MessageListener {
         for (ChatWebSocket chat : ChatWebSocket.clients.values()) {
             // 支持点对点,群聊模式
             if (receiver.contains(chat.getUserId())) {
-                chat.getSession().getAsyncRemote().sendText(message);
-                log.info("websocket消息发送成功,接收人:{} 消息内容:{}", chat.getUserId(), JsonUtil.toJsonString(message));
+                Session session = chat.getSession();
+                if (session != null && session.isOpen()) {
+                    session.getAsyncRemote().sendText(message);
+                    log.info("websocket消息发送成功,接收人:{} 消息内容:{}", chat.getUserId(), JsonUtil.toJsonString(message));
+                }
             }
         }
     }