@Override public void handle(ReadEvent event) { SelectionKey key = event.getKey(); SocketChannel channel = (SocketChannel) key.channel(); Session session = (Session) key.attachment(); if (session.isClosed()) { return; } try { ChannelData data = session.getData(channel); ByteBuffer readBuffer = data.getReadBuffer(); int size = channel.read(readBuffer); if (size < 0) { session.close(); return; } readBuffer.flip(); handleRead(session, data.getType(), data.getReadBuffer()); } catch (Throwable t) { Logger.debug(t); session.close(); } }