Explorar el Código

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

wangqi49 hace 5 meses
padre
commit
c33c956a11

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