Skip to content

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 مقدار {} برمی‌گردد.

نمونه

js
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() را برای هر رویداد صدا بزنید، نه یک بار هنگام آماده‌سازی. این تابع نشانی و برچسب زمانی را در همان دمی که اجرا می‌شود عکس می‌گیرد؛ اگر آن را از دل رسیدگی‌کننده بیرون بکشید، همهٔ رویدادهای بعدی وضعیت لحظهٔ بارگذاری صفحه را گزارش می‌کنند.

در ۰٫۳ جای getHost را گرفت

getHost() برداشته شده است. نقطهٔ پایانی گزارش را از دامنه‌ای می‌ساخت که به نام نویسندهٔ همین مخزن در کد سفت شده بود، و ویرایشی نیمه‌کاره خروجی‌اش را تا رشتهٔ عینی '//log.' (میزبانی که به آن نمی‌توان رسید) خراب کرده بود؛ پس هر گزارشی که url صریح نداشت، خاموشانه به هیچ فرستاده می‌شد. createData() نیز دیگر کوکی سفت‌شدهٔ chaxus_prod را نمی‌خواند؛ به‌جایش userIdCookie را تنظیم کنید.

منتشرشده تحت مجوز MIT.