Todos os produtos
Search
Central de documentação

Application Real-Time Monitoring Service:Buffer data before SDK initialization

Última atualização: Jun 27, 2026

Quando o SDK do Browser Monitoring do Application Real-Time Monitoring Service (ARMS) carrega de forma assíncrona, o envio de dados pode falhar se houver chamadas de método antes da conclusão da inicialização. Use o mecanismo __bl.pipe para enfileirar essas chamadas e permitir que o SDK as execute automaticamente após a inicialização.

Por que os dados são perdidos

Como o carregamento do SDK é assíncrono, há um intervalo entre o início da geração de dados de monitoramento pela página e o momento em que o SDK está pronto para processá-los. Dois cenários costumam causar esse problema:

  • Envio durante o carregamento da página: A página gera chamadas de API, visualizações de página (PV) ou mensagens personalizadas enquanto o script do SDK ainda está sendo baixado ou inicializado, ou quando não é possível determinar o resultado da inicialização.

  • Configuração antecipada: A lógica de inicialização do aplicativo chama setConfig antes que o SDK, carregado assincronicamente, esteja disponível.

Qualquer chamada de método do SDK feita durante esse intervalo pode falhar, a menos que você a armazene em buffer com __bl.pipe.

Enfileirar múltiplas chamadas

O SDK adiciona o atributo pipe ao objeto __bl para armazenar em cache as informações chamadas previamente. Atribua um array aninhado a __bl.pipe, em que cada array interno representa uma chamada de método do SDK: o primeiro elemento é o nome do método (string) e os demais são os parâmetros.

__bl.pipe = [
    // Report the current HTML page as an API request.
    // Equivalent to: __bl.api(api, success, time, code, msg)
    ['api', '/index.html', true, performance.now, 'SUCCESS'],

    // Enable automatic single-page application (SPA) resolution after initialization.
    ['setConfig', {enableSPA: true}]
];

Após a conclusão da inicialização, o SDK reproduz cada chamada armazenada em cache, seguindo a ordem definida em window.__bl.pipe.

Enfileirar uma única chamada

Para uma única chamada do SDK, use um array simples em vez de um array aninhado:

__bl.pipe = ['msg', "I'm another generic message"];

Enfileirar em um aplicativo de página única

Em um aplicativo de página única (SPA) com autoSend: false, os dados de PV são enviados pela primeira vez após a inicialização do aplicativo. No entanto, nem sempre é possível determinar se a inicialização foi concluída. Use __bl.pipe para lidar com essa situação:

// Set the page name to "homepage" and report PV data.
__bl.pipe = ['setPage', 'homepage'];

Chamar pipe quando o estado de inicialização for incerto

Caso não tenha certeza se o SDK foi inicializado e queira evitar verificações condicionais complexas, chame o método pipe após a inicialização do SDK. Esse recurso é compatível com Internet Explorer 9 e versões posteriores.

Importante

Antes da conclusão da inicialização, cada atribuição a __bl.pipe substitui o valor anterior. Apenas o último valor atribuído é executado. Para armazenar múltiplas chamadas em buffer em uma única atribuição, use um array aninhado conforme demonstrado na seção Enfileirar múltiplas chamadas acima.