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

    Posts Relacionados

    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!