Beacon 웹 API를 사용하여 사용자 활동을 기록하는 방법은 무엇입니까?
13462 단어 codenewbiewebdevbeginnersjavascript
Beacon API
은 상대적으로 알 수 없고 경량급이며 효율적인 방식으로 웹 활동을 서버에 기록하는 데 사용된다.이것은 개발자가 브라우저에서 서버에 소량의 데이터를 보내는 데 도움을 주는 자바스크립트 API입니다. 예를 들어 정보를 분석하거나 추적하거나 디버깅하거나 진단하는 것입니다.본고에서 우리는
Beacon API
을 이해하고 이를 이용하여 일부 사용자 활동을 서버에 기록할 것이다.좋아해서 알았으면 좋겠어.Beacon Web APIBeacon API
은 비동기적이고 비차단 요청을 웹 서버로 조정합니다.신호 요청은 몇 가지 특징이 있는데,
XHR
또는 fetch
요청과 크게 다르다.non-blocking
은 response
에 대한 기대가 없기 때문에 커서 요청이 페이지에서 마운트 해제될 때 매우 유용하고 서버에 데이터를 보낼 수 있다(예를 들어 브라우저 닫기, 페이지 내비게이션 등).Beacon API는 어떻게 사용합니까?
Beacon API는 광범위한 브라우저 지원을 제공합니다.그것은 most of the browsers에 적용되지만 인터넷 익스플로러의 이전 버전은 제외됩니다.
안전을 위해서 우리는 이 간단한 검사를 사용하여 브라우저 지원을 테스트할 수 있습니다.
if (navigator.sendBeacon) {
// Initiate a beacon request
} else {
// May be, fallback to XHR or fetch?
}
Navigator.sendBeacon()
방법으로 서버에 커서 요청을 보냅니다.이 방법은 두 개의 매개 변수, 서버의 URL과 데이터를 채택한다.sendBeacon()
방법은 부울 값을 되돌려줍니다.대기열에 올바르게 넣으려면 true
을 되돌려주십시오. 그렇지 않으면 false
을 되돌려줍니다.
if (navigator.sendBeacon) {
navigator.sendBeacon('/log-tracking', data);
} else {
// May be, fallback to XHR or fetch?
}
data
방법의 sendBeacon()
매개 변수는 선택할 수 있으며 그 유형은 ArrayBufferView
, Blob
, DOMString
또는 FormData
이다.FormData
을 사용하여 우리의 예시를 위해 데이터를 만듭니다.
function sendAnalytics(msg) {
if (navigator.sendBeacon) {
let data = new FormData();
data.append('start', startTime);
data.append('end', performance.now());
data.append('msg', msg);
navigator.sendBeacon('/log-tracking', data);
} else {
// May be, fallback to XHR or fetch?
}
}
위의 예시에서 우리는 사용자가 응용 프로그램에 쓴 start
과 end
의 시간을 보냈다.사용자가 실행할 활동 (예를 들어 단추를 누르거나 페이지 부분으로 스크롤하는 등) 을 포착하는 추적 msg
도 보냈다.unload
및/또는 beforeunload
이벤트에 대한 처리 프로그램을 지정하고 sendAnalytics()
방법을 호출할 수 있습니다.
window.addEventListener('unload', function() {
sendAnalytics(msg);
});
우리가 URL data
을 사용하여 /log-tracking
을 보낼 때 서버 측 코드는 어느 곳에서든 이 정보를 기록하고 이를 분석 목적으로 사용할 수 있다.
다음은 예시 express
서버 코드입니다. 이 정보를 컨트롤러에 기록합니다.우리는 파일 시스템, 데이터베이스 등에 기록할 수 있는 충분한 창의력을 가지고 있습니다. 서버는 여기에서 어떠한 응답도 돌아오지 않습니다.
app.post('/log-tracking', function(req, res) {
console.log('**** Tracked. Now logging ****');
let startTime = req.body.start;
let endTime = req.body.end;
let trackInfo = req.body.msg;
let logMsg = '';
let time = (endTime - startTime) / 1000;
logMsg = `${time.toFixed(2)} seconds`;
if (time > 60) {
time = time / 60;
logMsg = `${time.toFixed(2)} minutes`;
}
console.log('In Session for: ', logMsg);
console.log('Tracking info: ', trackInfo);
});
프레젠테이션
다음은 Beacon
요청의 작업 원리를 보여주는 빠른 프레젠테이션(12초)이다.여기 버튼이 두 개 있어요.서버에 임시 커서 요청을 보내는 단추가 있고, 브라우저 unload
이벤트를 모의하는 단추가 있습니다.
아래에서 보듯이 서버 컨트롤러는 예시 메시지를 사용하여 시간 정보를 기록합니다.사용자가 브라우저를 닫으면 정보가 기록됩니다.
개발자 도구 (네트워크 옵션 카드) 에서 커서 요청을 보면, 서버가 응답을 보내지 않았기 때문에 요청이 pending
인 것을 볼 수 있습니다.이것이 바로 우리가 브라우저 마운트 해제 이벤트에서 커서 요청을 보낼 때 더 좋은 용도로 사용할 수 있는 이유입니다.
또 다른 주의사항은 커서 요청이 XHR
요청이 아니라는 것이다.위에서 All
옵션을 선택하여 이 요청을 추적할 수 있습니다.
소스 코드
본문과 프레젠테이션에 사용된 모든 소스 코드는 아래에 언급된 GitHub repo에 있습니다.마음대로 갈라서 수정하고 사용하세요.스타로 당신의 지지를 표시합니다(⭐) 니가 이 프로젝트를 좋아하면여러분의 관심을 환영합니다.🤝 GitHub에서 계속 연락 주세요.
아타파스
/
추적기 커서api
예제를 통해 Web Beacon API를 학습합니다.이 프로젝트를 시도하여 실천 탐색을 진행하다.
🔎 Tracker-Web Beacon API 데모Beacon API
은 비동기적이고 비차단 요청을 웹 서버로 조정합니다.신호 요청은 몇 가지 특징이 있는데,
if (navigator.sendBeacon) {
// Initiate a beacon request
} else {
// May be, fallback to XHR or fetch?
}
if (navigator.sendBeacon) {
navigator.sendBeacon('/log-tracking', data);
} else {
// May be, fallback to XHR or fetch?
}
function sendAnalytics(msg) {
if (navigator.sendBeacon) {
let data = new FormData();
data.append('start', startTime);
data.append('end', performance.now());
data.append('msg', msg);
navigator.sendBeacon('/log-tracking', data);
} else {
// May be, fallback to XHR or fetch?
}
}
window.addEventListener('unload', function() {
sendAnalytics(msg);
});
app.post('/log-tracking', function(req, res) {
console.log('**** Tracked. Now logging ****');
let startTime = req.body.start;
let endTime = req.body.end;
let trackInfo = req.body.msg;
let logMsg = '';
let time = (endTime - startTime) / 1000;
logMsg = `${time.toFixed(2)} seconds`;
if (time > 60) {
time = time / 60;
logMsg = `${time.toFixed(2)} minutes`;
}
console.log('In Session for: ', logMsg);
console.log('Tracking info: ', trackInfo);
});
다음은
Beacon
요청의 작업 원리를 보여주는 빠른 프레젠테이션(12초)이다.여기 버튼이 두 개 있어요.서버에 임시 커서 요청을 보내는 단추가 있고, 브라우저 unload
이벤트를 모의하는 단추가 있습니다.아래에서 보듯이 서버 컨트롤러는 예시 메시지를 사용하여 시간 정보를 기록합니다.사용자가 브라우저를 닫으면 정보가 기록됩니다.
개발자 도구 (네트워크 옵션 카드) 에서 커서 요청을 보면, 서버가 응답을 보내지 않았기 때문에 요청이
pending
인 것을 볼 수 있습니다.이것이 바로 우리가 브라우저 마운트 해제 이벤트에서 커서 요청을 보낼 때 더 좋은 용도로 사용할 수 있는 이유입니다.또 다른 주의사항은 커서 요청이
XHR
요청이 아니라는 것이다.위에서 All
옵션을 선택하여 이 요청을 추적할 수 있습니다.소스 코드
본문과 프레젠테이션에 사용된 모든 소스 코드는 아래에 언급된 GitHub repo에 있습니다.마음대로 갈라서 수정하고 사용하세요.스타로 당신의 지지를 표시합니다(⭐) 니가 이 프로젝트를 좋아하면여러분의 관심을 환영합니다.🤝 GitHub에서 계속 연락 주세요.
아타파스
/
추적기 커서api
예제를 통해 Web Beacon API를 학습합니다.이 프로젝트를 시도하여 실천 탐색을 진행하다.
🔎 Tracker-Web Beacon API 데모Beacon API
은 비동기적이고 비차단 요청을 웹 서버로 조정합니다.신호 요청은 몇 가지 특징이 있는데,
Beacon API
은 비동기적이고 비차단 요청을 웹 서버로 조정합니다.신호 요청은 몇 가지 특징이 있는데,🚀 어떻게 실행합니까?node.js
이 설치되어 있는지 확인합니다.
npm install
또는 yarn
을 실행합니다.node app.js
을 실행합니다.주요 용례
두 가지 주요 용례가 있는데 Beacon API
을 사용할 수 있다.
사용자 활동 추적 및 분석
사용자 활동 및 비헤이비어에 대한 분석 보고서를 캡처하여 전송할 수 있습니다.이러한 활동에는 다음이 포함될 수 있습니다.
분석과 사용자 활동 추적에 관한 또 다른 점은 이런 기능을 사용하기 전에 최종 사용자의 동의를 얻어야 한다는 것이다.
디버깅 및 진단
당신은 일찍이 이러한 상황을 겪은 적이 있습니까? 기능은 로컬에서 일하지만 고객 환경(생산 모델)에서 예상대로 일할 수 없습니다.이것은 전형적인 상황으로
Beacon API
은 하루(또는 하룻밤)를 절약할 수 있다.이 경량급 커서 요청을 논리적으로 보내서 유용한 추적 경로 정보를 기록하고 필요에 따라 디버깅할 수 있습니다.
커서 API 데이터 제한
Beacon API를 사용하여 서버에 전송할 수 있는 데이터에는 제한이 있습니다.그러나 이 제한은 모든 브라우저와 사용자 에이전트에서 통일되지 않습니다.
규범에 따라
The user agent must restrict the maximum data size to ensure that beacon requests are able to complete quickly and in a timely manner.
w3c의 beacon API specifications을 통독하세요.org에서 더 많은 정보를 얻을 수 있습니다.
총결산
어쨌든
The user agent must restrict the maximum data size to ensure that beacon requests are able to complete quickly and in a timely manner.
어쨌든
Beacon API
을 시도해 보세요.너도 좋아할 수도 있지만,트위터에서 @me()에 댓글을 달거나 언제든지 팔로우할 수 있다.
Reference
이 문제에 관하여(Beacon 웹 API를 사용하여 사용자 활동을 기록하는 방법은 무엇입니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/atapas/how-to-log-user-activities-using-the-beacon-web-api-5f62텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)