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