Sintaxe
newrelic.interaction([JSON object $options])Retorna um novo objeto de identificador que está vinculado à interação SPA atual ou uma nova interação, caso não exista uma.
Requisitos
- A API
.interaction()requer o agente Browser Pro+SPA (v963 ou superior). - Fornecer um objeto
$optionsà API só é suportado nas versões v1.285.0 e superiores. - A opção
waitForEndé suportada apenas na v1.285.0 e superior. - A opção
targetPageLoadé suportada apenas na v1.315.0 e superior.
Se você estiver instalando o agente do browser via npm e criando um agente personalizado com recursos selecionados, você deve habilitar o recurso spa ao criar a instância Agent. No array features, adicione o seguinte:
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 obter mais informações, consulte a documentação de instalação do browser npm.
Descrição
A chamada de API interaction() de monitoramento de SPA permite controlar e personalizar as interações de SPA rastreadas pelo agente do browser. Use esta API para:
- Crie manualmente interações personalizadas para padrões que o agente do browser não detecta automaticamente.
- Modifique as interações existentes adicionando atributos personalizados, nomeando-as ou controlando quando são concluídas.
Como funciona
Quando você chama newrelic.interaction(), você obtém um handle (um objeto JavaScript) que referencia um evento BrowserInteraction. Este manipulador permite chamar métodos como .save(), .ignore(), .setName() e .setAttribute() para controlar a interação.
Comportamento da API por estado de interação
A API se comporta de maneira diferente dependendo do estado atual da interação:
Estado | Comportamento |
|---|---|
No interaction in progress | Cria uma nova interação personalizada.
|
Interaction already in progress | Retorna um novo handle que referencia a interação atualmente ativa.
|
Targeting the initial page load | Quando você usa a opção
|
Principais comportamentos
Comportamento | Descrição |
|---|---|
Múltiplos handles são independentes | Cada chamada para |
Não é possível sobrescrever interações | Se um usuário clica em um botão (iniciando uma interação) e seu código então chama |
Identificadores ficam inativos | Assim que uma interação é concluída, quaisquer handles que a referenciam tornam-se inativos. Chamadas de método em handles inativos não têm efeito e não lançam erros. |
Use | Por padrão, as interações se encerram com base em heurísticas de SPA (mudanças de rota, conclusão de AJAX, estabilização do DOM). Definir |
Cuidado
Usar waitForEnd: true em conjunto com targetPageLoad: true manterá o evento BrowserInteraction de carregamento inicial da página aberto indefinidamente até que .end() seja chamado, alterando a definição padrão do evento BrowserInteraction de carregamento inicial da página. Este é um caso de uso avançado e deve ser usado com cautela.
Parâmetro
Parâmetro | Descrição |
|---|---|
Objeto JSON | Opcional: especifica opções que afetam o comportamento da interação.
|
Valores de retorno
Este método retorna um objeto JS nativo que aponta para um eventoBrowserInteraction potencial. Cada vez que esse método é chamado para o mesmo BrowserInteraction enquanto ele ainda não terminou, um novo objeto é criado, mas ele ainda faz referência à mesma interação.
Exemplos
Os métodos da API de SPA podem ser aplicados à saída retornada de newrelic.interaction(). Você pode atribuir o valor retornado ou o handle a outra variável para uso posterior. Por exemplo:
let myInteraction = newrelic.interaction();...myInteraction.save();Para obter uma lista de APIs de interação, consulte Rastrear aplicativos de página única.
Embora o identificador nomeado possa ser salvo e usado de fora de uma interação, observe que os métodos SPA não terão efeito após o término da interação.
A duração da interação também pode ser personalizada usando o seguinte 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.