Heartbeat: saiba o que é essa API e como usá-la no WordPress

Heartbeat é uma API que sincroniza as informações entre o painel WordPress e o servidor por meio do envio de dados contínuos. Dessa forma, a solução estabelece uma comunicação com o servidor, o que permite edições colaborativas e a visualização de atualizações de front-end quase em tempo real.

heartbeat

O Heartbeat é uma API incorporada ao WordPress que permite que o navegador se comunique com o servidor para fazer atualizações de front-end quase em tempo real.

Em hospedagens compartilhadas ela também pode enviar um grande número de solicitações ao servidor, resultar em alta utilização da CPU e, conforme o usuário atinge o limite de sua cota, pode resultar na suspensão da conta, devido a alta taxa de uso do processador.

Como a solução salva as edições dos usuários em ambientes colaborativos, ela também pode travar a página e impedir qualquer alteração enquanto outra pessoa acessa a página. Neste artigo discutimos a funcionalidade do Heartbeat, veja a seguir:

Como a Heartbeat funciona?

Conforme o próprio nome indica, Heartbeat (batimento cardíaco) é uma API que envia pulsos contínuos — e gatilhos de eventos, ao servidor. O principal objetivo é sincronizar as informações entre o seu painel WordPress e o servidor.

Por exemplo, durante a criação de um post do editor, o usuário tem a opção de salvar automaticamente as alterações enquanto o trabalho é executado. Esse processo é realizado de forma periódica até o envio da publicação.

Mas em sistemas colaborativos, quando vários usuários acessam o mesmo conteúdo, uma função de travamento impede que um usuário salve as edições enquanto o outro trabalha.

Esse processo de exibição de alterações de front-end quase em tempo real, também permite que usuários com a API em seu CMS visualize as vendas realizadas em seu e-commerce praticamente no momento em que elas ocorrem. Veja o funcionamento da Heartbeat:

  1. quando uma página é carregada, o código de pulsação do usuário configura um intervalo (chamado de “tick”) para execução a cada 15-60 segundos;
  2. ao alcançar esse intervalo, o Heartbeat reúne dados para enviá-los ao servidor por meio de um evento jQuery e então aguarda uma resposta;
  3. no servidor, uma ferramenta admin-ajax pega os dados transmitidos, prepara uma resposta, filtra a resposta e retorna os dados no formato JSON;
  4. o usuário recebe esses dados e dispara um evento jQuery final para indicar que os dados foram recebidos.

Como usar essa API?

O procedimento básico para personalizar os eventos da Heartbeat consiste em:

  • incluir campos adicionais nos dados a serem enviados (evento JS heartbeat-send);
  • detectar os campos enviados no PHP e adicionar campos de resposta (filtro recebido por heartbeat_r);
  • processar dados retornados em JS (JS heartbeat-tick).

Logo, o uso da API requer dois processos: o envio de dados e o recebimento de retornos em JavaScript. O evento também exige que haja um filtro no servidor para processar dados passados em PHP. Veja as orientações de uso da API segundo o site WordPress.org a seguir.

Envio de dados para o servidor

Quando a Heartbeat envia dados para o servidor, o usuário pode incluir informações personalizadas ou um valor verdadeiro simples para indicar que a espera de uma resposta específica:

jQuery( document ).on( 'heartbeat-send', function ( event, data ) {
    // Add additional data to Heartbeat data.
    data.myplugin_customfield = 'some_data';
});

Detecção dos dados recebidos e adição de dados à resposta do servidor

// Add filter to receive hook, and specify we need 2 parameters.
add_filter( 'heartbeat_received', 'myplugin_receive_heartbeat', 10, 2 );
 
/**
 * Receive Heartbeat data and respond.
 *
 * Processes data received via a Heartbeat request, and returns additional data to pass back to the front end.
 *
 * @param array $response Heartbeat response data to pass back to front end.
 * @param array $data Data received from the front end (unslashed).
 */
function myplugin_receive_heartbeat( $response, $data ) {
    // If we didn't receive our data, don't send any back.
    if ( empty( $data['myplugin_customfield'] ) ) {
        return $response;
    }
 
    // Calculate our data and pass it back. For this example, we'll hash it.
    $received_data = $data['myplugin_customfield'];
 
    $response['myplugin_customfield_hashed'] = sha1( $received_data );
    return $response;
}

Recebimento dos dados de volta no front-end

jQuery( document ).on( 'heartbeat-tick', function ( event, data ) {
    // Check for our data, and use it.
    if ( ! data.myplugin_customfield_hashed ) {
        return;
    }
 
    alert( 'The hash is ' + data.myplugin_customfield_hashed );
});

Nem todos os recursos precisam executar as três etapas. Por exemplo, o usuário pode não precisar enviar dados para o servidor, o que exigirá que ele execute apenas as duas últimas etapas.

Como parar a API Heartbeat?

Sem a API Heartbeat todas as edições feitas em um documento de página podem ser perdidas na ocorrência de qualquer problema, a menos que o usuário se lembre de apertar o botão “Salvar Como Rascunho” constantemente.

Além disso, ao parar a API, o usuário não terá mais acesso aos recursos de revisões do WordPress e ao instalar plugins baseados na Heartbeat, não receberá as notificações em tempo real nem poderá consultar os recursos de informação do site.

A única indicação para parar a Heartbeat é quando o usuário não trabalha de forma colaborativa ou não precisa de informações sobre o site em tempo real.

Para controlar a frequência que a API Heartbeat envia os pulsos de dados para o servidor, basta instalar o plugin Heartbeat Control:

acesse as configurações do plugin em “Configurações” » “Heartbeat Control Settings” para definir o comportamento da API;

  • em “Heartbeat Behavior” o usuário pode habilitar, desabilitar e modificar a Heartbeat;
  • na seção “Locations” o usuário escolhe o ambiente que será controlado (Painel do WordPress, Frontend e Editor de Post);
  • já na opção “Frequency” é possível modificar a quantidade de chamados para o servidor. O plugin permite configurar uma variação de callbacks entre 15 e 300 segundos;
Heartbeat

(Fonte)

Para que o usuário consiga parar a API Heartbeat sem a instalação de um plugin, basta adicionar as linhas de código no arquivo functions.php do tema ativo:

  • clique em “Aparência” » “Editor de Temas”;
  • verifique qual o tema está ativo;
  • acesse “Funções do tema” no menu de navegação no lado direito do dashboard;
  • cole a linha de código depois da tag de abertura <?php:
add_action( 'init', 'stop_heartbeat', 1 );
function stop_heartbeat()
{ wp_deregister_script('heartbeat');
}
  • clique em “Atualizar Arquivo”.
Heartbeat

(Fonte)

Se você utiliza um serviço de hospedagem com recursos limitados, pode considerar a instalação do Heartbeat Control para limitar o volume de pulsos para o servidor. Isso poderá aumentar consideravelmente o desempenho do seu site.

Mas se você trabalha de forma colaborativa, a Heartbeat é um recurso imprescindível para salvar as atualizações constantes do seu site.

Considere optar por uma hospedagem especializada, assim, você não precisará se preocupar com o uso de recursos muito menos com as alterações que interferem no desempenho da sua página. O Stage é uma plataforma de hospedagem altamente indicada para qualquer página WP na web.

Conheça também a Rest API e um conjunto de boas práticas utilizadas nas requisições HTTP para aplicações na web.

Compartilhe
facebook
linkedin
twitter
mail

Inscreva-se em nosso blog

Acesse, em primeira mão, nossos principais posts diretamente em seu email

Quer receber mais conteúdos brilhantes como esse de graça?

Inscreva-se para receber nossos conteúdos por email e participe da comunidade da Rock Content!