report / setReportUrl / createData

چراغک‌های سنجش را به نقطهٔ پایانی خودتان می‌فرستد.

API

setReportUrl(config)

نقطهٔ پایانی پیش‌فرض را یک بار هنگام راه‌اندازی تنظیم کنید. رشتهٔ نشانی یا یک شیء را می‌پذیرد:

میدان توضیح نوع
url نقطهٔ پایانی پیش‌فرض برای هر report() که url خودش را ندارد string
userIdCookie کوکی دربردارندهٔ شناسهٔ کاربر که createData() آن را برمی‌دارد string

getReportUrl()

نقطهٔ پایانی تنظیم‌شده، وگرنه ''.

report({ url?, type?, payload })

payload را می‌فرستد. نخست navigator.sendBeacon را می‌آزماید و اگر نشد به درخواست تصویر ۱×۱ پناه می‌برد. اگر یکی از راه‌ها آن را پذیرفت true و اگر هیچ‌کدام نتوانست بفرستد false برمی‌گرداند؛ نبودِ نقطهٔ پایانیِ تنظیم‌شده هم در همین دستهٔ دوم است.

createData(params?)

پوشش استاندارد را می‌سازد: شناسهٔ رویداد، نشانی صفحه، برچسب زمانی، ارجاع‌دهنده، دیدگاه و عامل کاربر، و اگر userIdCookie تنظیم شده باشد userId هم. params شما در پایان اعمال می‌شود. در SSR مقدار {} برمی‌گردد.

نمونه

import { createData, report, setReportUrl } from 'ranuts';

setReportUrl({ url: 'https://telemetry.example.com/collect', userIdCookie: 'uid' });

report({ payload: { ...createData(), type: 'page_view' } });

یادداشت‌ها

  1. نقطهٔ پایانی پیش‌فرضی در کار نیست، و این عمدی است. کتابخانه از کجا بداند سنجش شما به کجا تعلق دارد؟ پس report() به‌جای حدس زدن false برمی‌گرداند.
  2. انتخاب راه بر پایهٔ این است که sendBeacon واقعاً موفق شده باشد، نه بر پایهٔ وجود navigator. sendBeacon آن‌گاه که صف مرورگر از سهمیه بگذرد نیز false می‌دهد؛ آن حالت هم به چراغک تصویری می‌رسد.
  3. createData() را برای هر رویداد صدا بزنید، نه یک بار هنگام آماده‌سازی. این تابع نشانی و برچسب زمانی را در همان دمی که اجرا می‌شود عکس می‌گیرد؛ اگر آن را از دل رسیدگی‌کننده بیرون بکشید، همهٔ رویدادهای بعدی وضعیت لحظهٔ بارگذاری صفحه را گزارش می‌کنند.