Commit 00ce940b by 李晓钟

解决旧连接超时 误删除新session连接的问题。

parent 3567499d
...@@ -79,6 +79,12 @@ public class ChannelManager { ...@@ -79,6 +79,12 @@ public class ChannelManager {
// 关掉连接 // 关掉连接
channelHandlerContext.close(); channelHandlerContext.close();
ClientInfo oldChanel = ChannelManager.SESSION_INFO_MAP.get(genKeyForSessionInfoMap(clientId, platform));
if(oldChanel != null && oldChanel.getNioSocketChannel().isActive()) {
// 活跃的连接,可能是新建的,不能处理
log.info("连接还是活跃的,不下线处理 clientId {},oldChanel {}", clientId, oldChanel.getNioSocketChannel().id().asLongText());
return;
}
// 移除本地维护的channel // 移除本地维护的channel
delSessionInfoMap(clientId, platform); delSessionInfoMap(clientId, platform);
...@@ -97,11 +103,7 @@ public class ChannelManager { ...@@ -97,11 +103,7 @@ public class ChannelManager {
clientInfo.setNioSocketChannel(channel); clientInfo.setNioSocketChannel(channel);
clientInfo.setToken(""); clientInfo.setToken("");
log.info("本地存缓存key {}", genKeyForSessionInfoMap(clientId, platform)); log.info("本地存缓存key {}", genKeyForSessionInfoMap(clientId, platform));
ClientInfo oldChanel = ChannelManager.SESSION_INFO_MAP.get(genKeyForSessionInfoMap(clientId, platform));
if(oldChanel != null) {
log.info("删除旧连接 oldChanel {}", oldChanel.getNioSocketChannel().id());
oldChanel.getNioSocketChannel().close();
}
ChannelManager.SESSION_INFO_MAP.put(genKeyForSessionInfoMap(clientId, platform), clientInfo); ChannelManager.SESSION_INFO_MAP.put(genKeyForSessionInfoMap(clientId, platform), clientInfo);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment