이 페이지에서

For AI agents: a documentation index is available at /docs/llms.txt. Append .md to any page URL for markdown, or send Accept: text/markdown.

노드 SDK

npmv1.10.27.2 kB gzip

Amplitude Node.js SDK는 TypeScript로 작성된 Amplitude용 최초의 백엔드 SDK입니다.

클라이언트측 SDK는 단일 사용자 또는 장치에 대한 세션 및 기여 추적을 위해 최적화되어 있습니다. Node SDK는 개발자 경험에 중점을 두어 백엔드 서비스가 많은 사용자와 소스로부터 이벤트를 안정적이고 올바르게 전송할 수 있도록 지원합니다.

Node SDK는 다음을 제공합니다.

  • 동일한 요청에서 여러 이벤트를 전송하기 위한 이벤트 배치 작업입니다.
  • 네트워크 요청이 실패하거나 Amplitude가 페이로드를 조절하거나 거부할 때를 처리하기 위한 재시도 처리 메커니즘.
  • 계측 문제를 디버깅하는 데 도움이 되는 유용한 유틸리티와 타이핑.

SDK 초기화

계측을 하기 전에 Amplitude 프로젝트의 API 키를 사용하여 SDK를 초기화하십시오. 초기화는 기본 인스턴스를 생성합니다. 문자열 이름과 함께 getInstance를 사용하여 더 많은 인스턴스를 생성할 수 있습니다.

js
// Option 1, initialize with API_KEY only
Amplitude.init(AMPLITUDE_API_KEY);
// Option 2, initialize including configuration
var options = {};
Amplitude.init(AMPLITUDE_API_KEY, options);

SDK 구성

일괄 처리 동작 구성

고성능 환경을 지원하기 위해 SDK는 이벤트를 일괄 처리로 전송합니다. SDK는 logEvent 메서드가 메모리에 기록하는 모든 이벤트를 대기열에 추가한 다음, 백그라운드에서 이벤트를 일괄적으로 플러시합니다.maxCachedEvents 및 uploadIntervalInSec을 사용하여 일괄 처리 동작을 사용자 정의할 수 있습니다. 기본적으로 serverUrl은 https://api2.amplitude.com/2/httpapi입니다. 한 번에 대량의 데이터를 전송하려면 배치 모드를 사용하십시오. 서버 URL을 사용자의 요구에 맞는 배치 이벤트 업로드 API로 설정합니다.

  • 표준 서버 배치 API: https://api2.amplitude.com/batch.
  • EU 거주 서버 배치 API: https://api.eu.amplitude.com/batch.

일반 모드와 배치 모드 모두 동일한 이벤트 업로드 임계값과 플러시 시간 간격을 사용합니다.

js
Amplitude.init(AMPLITUDE_API_KEY, {
  // Events queued in memory will flush when number of events exceed upload threshold
  // Default value is 16000
  maxCachedEvents: 20000,
  // Events queue will flush every certain milliseconds based on setting
  // Default value is 0 second.
  uploadIntervalInSec: 10,
});

EU 데이터 상주

Amplitude의 EU 서버로 데이터를 전송하려면 초기화 중에 서버 URL을 구성하십시오.

js
client = Amplitude.init(AMPLITUDE_API_KEY, {
  serverUrl: "https://api.eu.amplitude.com/2/httpapi",
});

이벤트 전송

이 SDK는 HTTP V2 API를 사용하며 이벤트에 대해 동일한 제약 조건을 따릅니다. SDK에 기록된 모든 이벤트에 event_type 필드와 device_id 또는 user_id  중 하나 이상이 있어야 하며, 각 필드에 대한 HTTP API의 제약조건을 준수해야 합니다.

계측 문제를 방지하려면 장치 ID 및 사용자 ID는 5자 이상 길이의 문자열이어야 합니다. 이벤트에 포함된 장치 ID 또는 사용자 ID가 너무 짧은 경우, Amplitude는 이벤트에서 해당 ID 값을 제거합니다. 이벤트에 user_id 또는 device_id 값이 없는 경우, Amplitude는 400 상태 코드로 업로드를 거부할 수 있습니다. 기본 최소 길이 5자를 재정의하려면 요청과 함께 min_id_length 옵션을 전달하십시오.

import * as Amplitude from "@amplitude/node";
const client = Amplitude.init(AMPLITUDE_API_KEY);
client.logEvent({
  event_type: "Node.js Event",
  user_id: "datamonster@gmail.com",
  location_lat: 37.77,
  location_lng: -122.39,
  ip: "127.0.0.1",
  event_properties: {
    keyString: "valueString",
    keyInt: 11,
    keyBool: true,
  },
});
// Send any events that are currently queued for sending.
// Will automatically happen on the next event loop.
client.flush();

미들웨어

미들웨어를 사용하면 모든 이벤트에서 일련의 사용자 지정 코드를 실행하여 Amplitude를 확장할 수 있습니다. 미들웨어 패턴은 유연하며 이벤트 보강, 트랜스포메이션, 필터링, 타사 대상으로의 라우팅 등을 지원합니다.

각 미들웨어는 다음 시그니처를 가진 함수입니다:

js
function (payload: MiddlewarePayload: next: MiddlewareNext): void;

payload에는 사용자 지정 데이터를 고유한 미들웨어 구현에 전달할 수 있는 event 및 선택적 extra 필드가 포함되어 있습니다.

큐의 다음 미들웨어를 호출하려면 next 함수를 사용하십시오. 미들웨어 체인을 계속하려면 next(payload)를 호출하십시오. 미들웨어가 next를 호출하지 않는 경우 현재 미들웨어가 완료된 후 이벤트 처리가 중지됩니다.

client.addEventMiddleware()를 통해 Amplitude에 미들웨어를 추가하십시오. 필요한 만큼 미들웨어를 추가할 수 있습니다. 각 미들웨어는 추가한 순서대로 실행됩니다.

js
const loggingMiddleware: Middleware = (payload, next) => {
 console.log(`[amplitude] event=${payload.event} extra=${payload.extra}`);
 // continue to next middleware in chain
 next(payload);
}
const filteringMiddleware: Middleware = (payload, next) => {
 const {eventType} = payload.event;
 if (shouldSendEvent(eventType)) {
 next(payload)
 } else {
 // event will not continue to following middleware or be sent to Amplitude
 console.log(`Filtered event: ${eventType}`);
 }
}
client.addEventMiddleware(loggingMiddleware)
client.addEventMiddleware(filteringMiddleware)

예를 들어 TypeScript 및 JavaScript를 참조하십시오.

이 내용이 도움이 되었나요?