public void exit(String userId) { try { UserService.exit(userId); // 用户退出,修改离线时间 // socketChannel.shutdownInput(); // socketChannel.shutdownOutput(); // OnlineService.deleteLogin(userId, number); map.get(userId).socket().close(); map.get(userId).close(); mapkey.get(userId).cancel(); log.info("exit...."); } catch (Exception e) { log.info("close error"); } map.remove(userId); mapkey.remove(userId); log.info("exit success"); }
/** * 用户下线 * * @param sc * @throws IOException */ public void removeUser(SocketChannel sc) throws IOException { log.info("用户下线"); sc.socket().close(); sc.close(); for (String userId : map.keySet()) { if (map.get(userId) == sc) { log.info("找到userId:" + userId); UserService.exit(userId); /*sc.socket().close(); // 关闭 sc.close();*/ map.remove(userId); mapkey.remove(userId); // selectionKey.cancel(); break; } } getMapInfo(); }