断线重连 心跳修改

back_recharge
lvxinran 2021-03-02 12:11:25 +08:00
parent f87beb7368
commit 63aa8f13f3
3 changed files with 13 additions and 20 deletions

View File

@ -11,17 +11,23 @@ import java.util.concurrent.ConcurrentHashMap;
public class OnlineUserManager {
public static void userOnline(int uid, ISession session) {
tokenMap.put(session.getToken(),uid);
sessionMap.put(uid, session);
}
public static Map<Integer, ISession> sessionMap = new ConcurrentHashMap<>();
public static Map<Integer,Integer> tokenMap = new ConcurrentHashMap<>();
public static void checkOnline(){
UserManager.checkOffline();
}
public static void userOffline(int uid) {
if(sessionMap.containsKey(uid)){
tokenMap.remove(sessionMap.get(uid).getToken());
}
sessionMap.remove(uid);
}
@ -50,23 +56,10 @@ public class OnlineUserManager {
}
return sessionMap.containsKey(uid);
}
static class DefinaMap<k,v> extends HashMap<k,v>{
@Override
public boolean remove(Object key, Object value) {
return super.remove(key, value);
}
@Override
public v put(k key, v value) {
return super.put(key, value);
}
@Override
public void clear() {
super.clear();
public static boolean checkOnlineByToken(int token) {
if (tokenMap == null) {
return true;
}
return tokenMap.containsKey(token);
}
}

View File

@ -131,7 +131,7 @@ public class SessionManager implements INetSession<ISession>, INetReceived<ISess
private void dealHeartBeat(ISession session) {
session.setHeartBreatNums(3);
session.setHeartBreatNums(4);
MessageUtil.sendHeartBeat(session);
}
@ -170,7 +170,7 @@ public class SessionManager implements INetSession<ISession>, INetReceived<ISess
*/
private int onRepeatLogin(ISession newSession) {
int uid = newSession.getUid();
if (OnlineUserManager.checkUidOnline(uid)) {
if (OnlineUserManager.checkUidOnline(uid)&&!OnlineUserManager.checkOnlineByToken(newSession.getToken())) {
ISession iSession = OnlineUserManager.getSessionByUid(uid);
if (iSession == newSession) {
return 0;

View File

@ -52,7 +52,7 @@ public class ISession extends NettyGameSession {
}
}
private int heartBreatNums = 3;
private int heartBreatNums = 4;
//<<<<<<< HEAD
//=======