ClearTask的run方法没有看到销毁client,只有client.disconnect();store.remove(sessionId);
@Override
public void run() {
log.debug("entry ClearTask run method clearSession is "
+ clearSession + " and sessionId is " + sessionId);
Store store = SocketIOManager.getDefaultStore();
IOClient client = store.get(sessionId);
if (client == null) {
log.debug("the client is null");
return;
}
if (!clearSession && client.isOpen()) {
client.setOpen(false);
// maybe you need to save it into database
// some update method here
}
if (!clearSession) {
log.debug("add new task ~");
SocketIOManager.scheduleClearTask(new ClearTask(sessionId,
handler, true));
return;
}
// start new task to clear the client object
// 若被其它线程激活,则意味着当前client为有效状态
if (client.isOpen()) {
log.debug("the client's open is " + client.isOpen());
return;
}
log.info("now remove the clients from store with sessionid "
+ sessionId);
if (handler != null) {
handler.OnDisconnect(client);
} else {
log.info("ioHandler is null");
}
client.disconnect();
store.remove(sessionId);
}