Cuando el SDK de Browser Monitoring de Application Real-Time Monitoring Service (ARMS) se carga de forma asíncrona, el reporte de datos puede fallar si se realizan llamadas a métodos antes de que finalice la inicialización. Utilice el mecanismo __bl.pipe para colocar estas llamadas en una cola, de modo que el SDK las ejecute automáticamente después de inicializarse.
Por qué se pierden los datos
El SDK se carga de forma asíncrona, por lo que existe un intervalo entre el momento en que su página comienza a generar datos de monitoreo y el momento en que el SDK está listo para procesarlos. Dos escenarios suelen desencadenar esta situación:
Reporte durante la carga de la página: La página genera llamadas a API, vistas de página (PV) o mensajes personalizados mientras el script del SDK aún se descarga o se inicializa, o bien no es posible determinar el resultado de la inicialización.
Configuración temprana: La lógica de inicio de la aplicación llama a setConfig antes de que el SDK cargado de forma asíncrona esté disponible.
Cualquier llamada a un método del SDK realizada durante este intervalo puede fallar, a menos que la almacene en búfer mediante __bl.pipe.
Poner en cola varias llamadas
El SDK agrega el atributo pipe al objeto __bl para almacenar en caché la información llamada previamente. Asigne un arreglo anidado a __bl.pipe donde cada arreglo interno represente una llamada a un método del SDK: el primer elemento es el nombre del método (cadena de texto) y los elementos restantes son los 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}]
];
Una vez completada la inicialización, el SDK reproduce cada llamada almacenada en caché en orden desde window.__bl.pipe.
Poner en cola una sola llamada
Para una única llamada al SDK, utilice un arreglo plano en lugar de un arreglo anidado:
__bl.pipe = ['msg', "I'm another generic message"];
Poner en cola en una aplicación de una sola página
En una aplicación de una sola página (SPA) con autoSend: false, los datos de PV se reportan por primera vez después de la inicialización de la aplicación. Sin embargo, no es posible determinar si la inicialización ha concluido. Utilice __bl.pipe para gestionar esta situación:
// Set the page name to "homepage" and report PV data.
__bl.pipe = ['setPage', 'homepage'];
Llamar a pipe cuando el estado de inicialización es incierto
Si no tiene certeza sobre si el SDK se ha inicializado y no desea agregar comprobaciones condicionales complejas, puede llamar al método pipe después de que el SDK se inicialice. Esta función es compatible con Internet Explorer 9 y versiones posteriores.
Antes de que finalice la inicialización, cada asignación a __bl.pipe sobrescribe el valor anterior. Solo se ejecuta el último valor asignado. Para almacenar en búfer varias llamadas en una sola asignación, utilice un arreglo anidado como se muestra en la sección Poner en cola varias llamadas anterior.