@Override
  protected void onTextMessage(CharBuffer message) throws IOException {
    logger.debug("OnText - " + message);
    ObjectMapper mapper = new ObjectMapper();
    Command cmd;
    try {
      cmd = mapper.readValue(message.toString(), Command.class);
    } catch (Exception e) {
      e.printStackTrace();
      return;
    }

    if (!validateCommand(cmd)) {
      return;
    }

    if (cmd != null) {
      logger.debug(cmd.toString());
    }

    switch (cmd.getActionType()) {
      case Command.SUBSCRIBE:
        ((WebSocketPool) SpringContextUtil.getBean("webSocketPool")).bind(cmd.getChannel(), this);
        writeMessage(1, Command.SUBSCRIBE, "订阅成功!");
        break;
      case Command.UNSUBSCRIBE:
        ((WebSocketPool) SpringContextUtil.getBean("webSocketPool")).unbind(cmd.getChannel(), this);
        writeMessage(1, Command.SUBSCRIBE, "取消订阅成功!");
        break;
      case Command.PUBLISH:
        for (String channel : cmd.getChannel()) {
          ((PubSubService) SpringContextUtil.getBean("pubSubService"))
              .publish(channel, cmd.getMessage());
        }
        writeMessage(1, Command.PUBLISH, "发布成功!");
        break;
      case Command.HEART_BEAT:
        writeMessage(1, Command.HEART_BEAT, "链接成功!");
        break;
      default:
        writeMessage(-1, cmd.getActionType(), "未知命令!");
        break;
    }
  }
 @Override
 protected void onClose(int status) {
   logger.debug("WebSocket onClose");
   ((WebSocketPool) SpringContextUtil.getBean("webSocketPool")).unbind(this);
 }