menu
Is this helpful?

# Node.js

최신 버전:v1.4.1

업데이트 시간:2023-10-27

다운로드:Source Code (opens new window)

# 1. SDK 액세스

  1. npm를 이용하여 Node.js SDK를 다운로드합니다.
# install SDK
npm install thinkingdata-node --save

# update SDK
npm i thinkingdata-node@{version}
  1. Logbus 설치

TE 시스템을 통해 빠르고 정확한 데이터 전송을 위해, SDK와 LogBus를 함께 사용하여 서버 데이터의 데이터 리포트를 권장합니다.

# 2. 초기 설정

다음은 SDK의 초기 설정 포맷 코드입니다:

const ThinkingData = require('thinkingdata-node');
var teSDK = ThinkingData.initWithLoggingMode(LOG_DIRECTORY);

LOG_DIRECTORY는 로컬 액세스 파일의 주소가 됩니다. LogBus의 모니터 주소를 이 주소에 설정하면 자동으로 업로드됩니다. 이 SDK는 loggingMode 모드에서의 다중 인스턴스에 대한 파일 쓰기를 지원하지 않습니다.

log4js 로그 라이브러리를 프로젝트에서 사용하는 경우, loggingMode를 초기화할 때 샘플 프로젝트의 방법을 참조하세요.

// If you are also using log4js in your project you will need to pass in your own config file
// otherwise it will fail to write to the log
let yourOwnLog4jsConfigExample = {
    appenders: {
        you_console: {
            type: 'console',
            layout: {
                type: 'pattern', pattern: '%[[%d{yyyy-MM-dd hh:mm:ss.SSS}]-[%p]-[pid=%z]-[%f{1}-%l] %m%]'
            }
        },
    },
    categories: {
        you_categories: {
            appenders: ['you_console'],
            level: 'info'
        }
    },
};
let teSDK = ThinkingData.initWithLoggingMode('./log/te', {
    filePrefix: 'test',
    rotateHourly: true,
    pm2: false,
}, yourOwnLog4jsConfigExample);

# 3. 주요 기능

게스트 ID와 계정 ID를 정확하게 연동하기 위해, 게임 내에서 게스트 ID와 계정 ID를 모두 사용하는 경우, 이들 ID를 동시에 업로드하는 것을 권장합니다. 동시에 업로드하지 않을 경우, 유저가 중복으로 계산될 수 있습니다.

# 3.1 이벤트 전송

track을 사용하여 이벤트 전송을 합니다. 사전에 데이터 트래킹 정책을 준비한 후, 전송해 주세요. 다음은 모델 코드입니다.

let trackEvent = {
    accountId: '2222',
    distinctId: '1111',
    event: 'test_event',
    time: new Date(),
    ip: '202.38.64.1',
    properties: {
        prop_double: 134.1,
    },
    callback(e) {
        if (e) {
            console.log(e);
        }
    }
};

teSDK.track(trackEvent)
  • 이벤트 이름은 string 타입으로, 영문자와 숫자, "_"를 포함하며 최대 50자입니다.
  • Key는 해당 속성의 이름으로 string 타입이며, 영문자와 숫자, "_"를 포함하여 최대 50자입니다. TE 시스템은 일괄적으로 소문자로 통일됩니다.
  • Value는 해당 속성의 값으로, String, Number, Bloon, Time, object, array, list object를 지원합니다.

유저 속성은 이벤트 속성과 일치해야 합니다.

# 3.2 유저 속성 설정

일반적인 유저 속성에 대해서는 userSet을 사용하여 설정할 수 있으며, UserSet은 기존의 값을 덮어씁니다. 원래 해당 속성에 값이 없는 경우, 속성이 새로 생성됩니다. 다음은 코드 예시입니다.

let userSetData = {
    accountId: 'node_test',
    properties: {
        prop_date: new Date(),
        prop_double: 134.12,
        prop_string: 'hello',
        prop_int: 666,
        prop_array: ['str1', 'str2'],
    },
    callback(e) {
        if (e) {
            console.log(e);
        }
    }
};

teSDK.userSet(userSetData);

# 4. 코드 예시 (Example Code)

아래의 코드 예시에 모든 작업이 포함되어 있으며, 아래 순서대로 사용하는 것을 권장합니다:

var teSDK = ThinkingData.initWithLoggingMode('LOG_DIRECTORY');
let trackEvent = {
    accountId: '2222',
    distinctId: '1111',
    event: 'test_event',
    time: new Date(),
    ip: '202.38.64.1',
    properties: {
        prop_double: 134.1,
    },
    callback(e) {
        if (e) {
            console.log(e);
        }
    }
};

teSDK.track(trackEvent)
let userSetData = {
    accountId: 'node_test',
    properties: {
        prop_date: new Date(),
        prop_double: 134.12,
        prop_string: 'hello',
        prop_int: 666,
        prop_array: ['str1', 'str2'],
    },
    callback(e) {
        if (e) {
            console.log(e);
        }
    }
};

teSDK.userSet(userSetData);

teSDK.flush();