private void readTCP(SelectionKey key) throws IOException {

		SocketChannel channel = (SocketChannel) key.channel();

		ByteBuffer buffer = ByteBuffer.allocate(8192);

		int numRead = -1;
		try {
			numRead = channel.read(buffer);
		}
		catch (IOException e) {
			e.printStackTrace();
		}

		//Se cliente ficar offline
		if (numRead == -1) {
			this.dataMapTCP.remove(channel);
			Socket socket = channel.socket();
			SocketAddress remoteAddr = socket.getRemoteSocketAddress();
			Logger.log("Connection closed by client: " + remoteAddr);
			channel.close();
			key.cancel();
			return;
		}

		byte[] data = buffer.array();
		String msg = new String(data);
		msg = msg.trim();

		Usuario jogador = dataMapTCP.get(channel);

		//TODO Transformar em HashMap<"PREFIX", Listener>();
		List<Listener> listeners = new CopyOnWriteArrayList<Listener>(jogador.getListeners());
		for(Listener listener: listeners){

			String prefix = listener.getPrefix()+" ";

			if(msg.startsWith(prefix)){

				listener.trataMsgTCP(jogador, msg.substring(prefix.length()));

			}

		}

	}