통사론
newrelic.interaction([JSON object $options])현재 SPA 상호작용에 바인딩된 새 핸들 객체를 반환하거나, 상호작용이 없으면 새 상호작용을 반환합니다.
요구 사항
.interaction()API에는 브라우저 Pro+SPA 에이전트(v963 이상)가 필요합니다.- API에
$options객체를 제공하는 것은 v1.285.0 이상 버전에서만 지원됩니다. waitForEnd옵션은 v1.285.0 이상에서만 지원됩니다.targetPageLoad옵션은 v1.315.0 이상에서만 지원됩니다.
npm을 통해 수분 에이전트를 설치하고 선택한 기능으로 사용자 정의 에이전트를 구축하는 경우, Agent 를 생성할 때 spa 기능을 활성화해야 합니다. features 에 다음을 추가하세요.
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)자세한 내용은 npm 브라우저 설치 설명서를 참조하세요.
설명
SPA 모니터링 interaction() API 호출을 사용하면 브라우저 에이전트가 추적하는 SPA 상호작용을 제어하고 맞춤 설정할 수 있습니다. 이 API를 사용하여 다음을 수행합니다:
- 브라우저 에이전트가 자동으로 감지하지 못하는 패턴에 대해 사용자 지정 상호작용을 수동으로 생성하십시오.
- 커스텀 속성을 추가하거나, 이름을 지정하거나, 완료 시점을 제어하여 기존 상호작용을 수정합니다.
작동 원리
newrelic.interaction()을(를) 호출하면 BrowserInteraction 이벤트를 참조하는 handle [핸들] (JavaScript 객체)을 얻게 됩니다. 이 핸들을 사용하면 .save(), .ignore(), .setName() 및 .setAttribute() 와 같은 메서드를 호출하여 상호작용을 제어할 수 있습니다.
상호작용 상태별 API 동작
API는 상호작용의 현재 상태에 따라 다르게 동작합니다:
상태 | 행동 |
|---|---|
No interaction in progress | 새로운 커스텀 상호작용을 생성합니다.
|
Interaction already in progress | 현재 활성화된 상호작용을 참조하는 새 핸들을 반환합니다.
|
Targeting the initial page load |
|
주요 행동
행동 | 설명 |
|---|---|
여러 핸들은 독립적입니다 |
|
상호작용을 덮어쓸 수 없습니다 | 사용자가 버튼을 클릭하고(상호작용 시작) 이후 코드가 |
핸들이 비활성화됩니다 | 상호작용이 완료되면, 이를 참조하는 모든 핸들이 비활성화됩니다. 비활성 핸들에 대한 메서드 호출은 아무런 영향을 미치지 않으며 오류를 발생시키지 않습니다. |
정밀한 제어를 위해 | 기본적으로 상호작용은 SPA 휴리스틱(경로 변경, AJAX 완료, DOM 안정화)을 기반으로 종료됩니다. |
주의
waitForEnd: true 을(를) targetPageLoad: true 와(과) 함께 사용하면 .end() 이(가) 호출될 때까지 초기 페이지 로드 BrowserInteraction 이벤트가 무기한 열린 상태로 유지되며, 초기 페이지 로드 BrowserInteraction 이벤트의 기본 정의가 변경됩니다. 이는 고급 사용 사례이며 주의해서 사용해야 합니다.
매개변수
매개변수 | 설명 |
|---|---|
JSON 객체 | 선택 사항: 상호작용 동작에 영향을 미치는 옵션을 지정합니다.
|
반환 값
이 메서드는 잠재적인 BrowserInteraction 이벤트 를 가리키는 네이티브 JS 객체를 반환합니다. BrowserInteraction 이 아직 종료되지 않은 상태에서 이 메서드가 동일한 에 대해 호출될 때마다 새 객체가 생성되지만 여전히 동일한 인스턴스를 참조합니다.
예
SPA API 메서드는 newrelic.interaction()의 반환된 출력에 적용할 수 있습니다. 나중에 사용하기 위해 반환된 값이나 핸들을 다른 변수에 할당할 수 있습니다. 예를 들어:
let myInteraction = newrelic.interaction();...myInteraction.save();상호작용 API 목록은 단일 페이지 앱 추적을 참조하십시오.
명명된 핸들은 인스턴스 외부에서 저장하여 사용할 수 있지만, 인스턴스가 종료된 후에는 SPA 메서드가 아무런 효과가 없다는 점에 유의하세요.
다음 방법을 사용하여 상호작용 기간을 사용자 지정할 수도 있습니다.
// 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.