@Override
    protected void handleTextMessage(WebSocketSession session, TextMessage textMessage)
        throws Exception {

      ByteBuffer payload = ByteBuffer.wrap(textMessage.getPayload().getBytes(UTF_8));
      List<Message<byte[]>> messages = this.decoder.decode(payload);

      for (Message message : messages) {
        StompHeaderAccessor headers = StompHeaderAccessor.wrap(message);

        if (StompCommand.CONNECTED.equals(headers.getCommand())) {

          this.stompMessageHandler.afterConnected(session, headers);
        } else if (StompCommand.MESSAGE.equals(headers.getCommand())) {
          this.stompMessageHandler.handleMessage(message);
        } else if (StompCommand.RECEIPT.equals(headers.getCommand())) {
          this.stompMessageHandler.handleReceipt(headers.getReceiptId());
        } else if (StompCommand.ERROR.equals(headers.getCommand())) {
          this.stompMessageHandler.handleError(message);
        } else if (StompCommand.ERROR.equals(headers.getCommand())) {
          this.stompMessageHandler.afterDisconnected();
        } else {
          LOGGER.debug("Unhandled message " + message);
        }
      }
    }