콘텐츠로 이동

beforeSend (데이터 가로채기 및 데이터 수정)

RUM SDK는 각 데이터를 전송하기 전에 beforeSend 메서드를 실행합니다. 이 메서드의 구현을 사용자 정의하여 다음 작업을 수행할 수 있습니다.

  • 일부 데이터 수정
  • 데이터 전송 차단

beforeSend는 두 개의 매개변수를 제공합니다:

function beforeSend(event, context)

event는 SDK가 생성하여 수집하는 다양한 메트릭 데이터 객체입니다. context의 구체적인 관련 정보는 다음과 같습니다.

이벤트 유형 컨텍스트
View Location
Action Event
Resource (XHR) XMLHttpRequest, PerformanceResourceTiming
Resource (Fetch) Reqeust, Response, PerformanceResourceTiming
Resource (Other) PerformanceResourceTiming
Error Error
Long Task PerformanceLongTaskTiming

일부 데이터 수정

window.DATAFLUX_RUM &&
    window.DATAFLUX_RUM.init({
        ...,
        beforeSend: (event, context) => {
            if (event.type === 'resource' && event.resource.type === 'fetch') {
                // 원본 데이터에 요청 응답 헤더 정보 추가
                event.context = {...event.context, responseHeaders: context.response.headers}
            }
        },
        ...
    });
참고

beforeSend는 SDK에서 수정을 허용하는 데이터 필드만 수정할 수 있습니다. 이 범위를 벗어난 수정은 무시됩니다.

SDK에서 수정을 허용하는 필드는 다음과 같습니다.

속성 유형 설명
view.url string 페이지 주소
view.referrer string 페이지 레퍼러
resource.url string 리소스 주소
error.message string 오류 메시지
error.resource.url string 오류 리소스 주소
context string 전역 사용자 정의 콘텐츠 (예: addAction, addError를 통해 추가된 콘텐츠)

데이터 전송 차단

beforeSend 메서드에서 true 또는 false를 반환하여 불필요한 데이터를 차단할 수 있습니다.

  • true는 이 데이터를 보고해야 함을 의미합니다
  • false는 이 데이터를 보고하지 않음을 의미합니다
window.DATAFLUX_RUM &&
    window.DATAFLUX_RUM.init({
        ...,
        beforeSend: (event) => {
            if (shouldDiscard(event)) {
                return false
            } else {
                return true
            }
            ...
        },
        ...
    });

문서 평가

이 페이지가 도움이 되었나요?