Commit 00ce940b by 李晓钟

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

parent 3567499d
......@@ -79,6 +79,12 @@ public class ChannelManager {
// 关掉连接
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
delSessionInfoMap(clientId, platform);
......@@ -97,11 +103,7 @@ public class ChannelManager {
clientInfo.setNioSocketChannel(channel);
clientInfo.setToken("");
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);
}
......
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