Ver Fonte

refactor:完善非空判断

王智勇 há 5 anos atrás
pai
commit
68a15bb819

+ 13 - 6
dim-common/src/main/java/com/dzdy/dim/util/SessionUtil.java

@@ -3,6 +3,7 @@ package com.dzdy.dim.util;
 import com.dzdy.dim.contants.AttrContants;
 import com.dzdy.dim.contants.Session;
 import io.netty.channel.Channel;
+import io.netty.util.Attribute;
 import io.netty.util.internal.StringUtil;
 
 import java.util.ArrayList;
@@ -28,8 +29,8 @@ public class SessionUtil {
     }
 
     public static void unBind(Channel channel) {
-        if (hasLogin(channel)) {
-            Session session = getSession(channel);
+        Session session = getSession(channel);
+        if (session != null) {
             USER_ID_CHANNEL_MAP.remove(session.getSessionId());
             channel.attr(AttrContants.SESSION).set(null);
         }
@@ -40,7 +41,11 @@ public class SessionUtil {
     }
 
     public static Session getSession(Channel channel) {
-        return channel.attr(AttrContants.SESSION).get();
+        Attribute<Session> attr = channel.attr(AttrContants.SESSION);
+        if (attr != null) {
+            return attr.get();
+        }
+        return null;
     }
 
     public static Channel getChannel(String sessionId) {
@@ -51,10 +56,12 @@ public class SessionUtil {
         List<Session> sessionList = new ArrayList<>(USER_ID_CHANNEL_MAP.size());
         for (Channel channel : USER_ID_CHANNEL_MAP.values()) {
             Session session = getSession(channel);
-            if (!StringUtil.isNullOrEmpty(userId) && !userId.equals(session.getUserId())) {
-                continue;
+            if (session != null) {
+                if (!StringUtil.isNullOrEmpty(userId) && !userId.equals(session.getUserId())) {
+                    continue;
+                }
+                sessionList.add(session);
             }
-            sessionList.add(session);
         }
         return sessionList;
     }