client 什么时候被销毁的?

34 views
Skip to first unread message

xian...@gmail.com

unread,
Jan 14, 2014, 11:12:12 PM1/14/14
to socketi...@googlegroups.com
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);
        }
Reply all
Reply to author
Forward
0 new messages