Sintaxis
newrelic.interaction([JSON object $options])Devuelve un nuevo objeto de controlador que está vinculado a la interacción SPA actual, o una nueva interacción si no existe ninguna.
Requisitos
- La API
.interaction()requiere el agente Browser Pro+SPA (v963 o superior). - Proporcionar un objeto
$optionsa la API solo se admite en las versiones v1.285.0 y posteriores. - La opción
waitForEndsolo se admite en la v1.285.0 y superiores. - La opción
targetPageLoadsolo se admite en v1.315.0 y superiores.
Si está instalando el agente del browser a través de npm y creando un agente personalizado con funciones seleccionadas, debe habilitar la función spa al crear la instancia Agent. En el arreglo features, agregue lo siguiente:
import { Agent } from '@newrelic/browser-agent/loaders/agent'import { Spa } from '@newrelic/browser-agent/features/spa';
const options = { info: { ... }, loader_config: { ... }, init: { ... }, features: [ ... other features ... Spa ]}
new Agent(options)Para obtener más información, consulte la documentación de instalación del navegador npm.
Descripción
La llamada API interaction() de monitoreo de SPA le permite controlar y personalizar las interacciones de SPA rastreadas por el agente del browser. Utilice esta API para:
- Crea manualmente interacciones personalizadas para los patrones que el agente del browser no detecta automáticamente.
- Modifique las interacciones existentes agregando atributos personalizados, asignándoles un nombre o controlando cuándo se completan.
Cómo funciona
Cuando llamas a newrelic.interaction(), obtienes un handle (un objeto de JavaScript) que hace referencia a un evento BrowserInteraction. Este identificador le permite llamar a métodos como .save(), .ignore(), .setName() y .setAttribute() para controlar la interacción.
Comportamiento de la API por estado de interacción
La API se comporta de manera diferente dependiendo del estado actual de la interacción:
Estado | Comportamiento |
|---|---|
No interaction in progress | Crea una nueva interacción personalizada.
|
Interaction already in progress | Devuelve un nuevo identificador que hace referencia a la interacción actualmente activa.
|
Targeting the initial page load | Cuando utiliza la opción
|
Comportamientos clave
Comportamiento | Descripción |
|---|---|
Los múltiples manejadores son independientes | Cada llamada a |
No se pueden sobrescribir las interacciones | Si un usuario hace clic en un botón (iniciando una interacción) y su código luego llama a |
Los identificadores se vuelven inactivos | Una vez que se completa una interacción, cualquier identificador que haga referencia a ella se vuelve inactivo. Las llamadas a métodos en identificadores inactivos no tienen efecto y no lanzan errores. |
Use | De forma predeterminada, las interacciones se cierran en función de las heurísticas de SPA (cambios de ruta, finalización de AJAX, estabilización del DOM). Establecer |
Advertencia
Usar waitForEnd: true junto con targetPageLoad: true mantendrá el evento BrowserInteraction de carga inicial de la página abierto indefinidamente hasta que se llame a .end(), cambiando la definición predeterminada del evento BrowserInteraction de carga inicial de la página. Este es un caso de uso avanzado y debe usarse con precaución.
Parámetros
Parámetro | Descripción |
|---|---|
Objeto JSON | Opcional: especifica opciones que afectan el comportamiento de la interacción.
|
Valores de retorno
Este método devuelve un objeto JS nativo que apunta a un posible eventoBrowserInteraction . Cada vez que se llama a este método para el mismo BrowserInteraction mientras aún no finalizó, se crea un nuevo objeto, pero aún hace referencia a la misma interacción.
Ejemplos
Los métodos de la API de SPA se pueden aplicar a la salida devuelta de newrelic.interaction(). Puede asignar el valor devuelto o el identificador a otra variable para su uso posterior. Por ejemplo:
let myInteraction = newrelic.interaction();...myInteraction.save();Para ver una lista de las API de interacción, consulte Rastrear aplicaciones de una sola página.
Si bien el identificador nombrado se puede almacenar y usar desde fuera de una interacción, tenga en cuenta que los métodos SPA no tendrán efecto una vez finalizada la interacción.
La duración de la interacción también se puede personalizar mediante el siguiente método:
// Say an interaction is already open from a user click.const userInteraction = newrelic.interaction({ waitForEnd: true }); // grabs the current interaction in-progress & keep it open// URL changes & DOM is modified. Because of those condition being met, interaction will be saved but is kept open.fetch('myurl.com/endpoint').then(() => userInteraction.end()) // associate this request to the interaction before completing this BrowserInteraction
const myCustomIxn = newrelic.interaction({ waitForEnd: true }) // create a new api-triggered interaction// This interaction will be kept open indefinitely until `.end` is called, and no new interaction will start, custom or otherwise. AjaxRequest will continue to buffer under this interaction until it is closed.