Speciala retfunkcio por analizaj datumoj en retumilo

Kiel uzi 'sendBeacon' por fidinde transdoni malgrandajn datumajn pecojn

Kio estas "sendBeacon"

Vi probable konas la du eblojn uzotajn kiam vi volas fari peton de kliento, kiel de via progresema interreta programo: ĉu XMLHttpRequest aŭ la pli nova "alportu". Sed ĉu vi sciis, ke ekzistas tria eblo, specife desegnita por sendi tre malgrandajn datumajn pecojn kiel analizajn datumojn? Ĝi estas funkcio nomata "sendBeacon", kiu haveblas en modernaj foliumiloj de la "navigilo" -objekto.

Kiel uzi "sendBeacon"

Uzi ĉi tiun celkonstruitan petfunkcion por malgrandaj datumaj pecoj estas vere simpla. Tiel longe kiel la "navigilo" kaj la "sendBeacon" -funkcio en la navigilo haveblas, vi nur bezonas provizi URL-on kaj utilan ŝarĝon por sendi.

Vi povas sendi la jenajn specojn de datumoj.

  • ArrayBuffer
  • ArrayBufferView
  • Iometo
  • DOMString
  • FormData
  • URLSearchParams

Ĉiu alvoko de "sendBeacon" transdonos POST-peton al la specifa finpunkto.

async function track(payload: TrackPayload){
  // We're using 'optional property access'
  // for a simple and clean implementation.
  //
  // You could of course also use nested if(){ ... }.
  await navigator?.sendBeacon?.('/track', payload);
}

// The following example is taken directly
// from the MDN page, linked in the addendum
// at the end of this page.
//
// It demonstrates the usage with the
// 'visibilitychange'-event when the user
// could close your web app.
document.addEventListener('visibilitychange', function logData() {
  if (document.visibilityState === 'hidden') {
    navigator.sendBeacon('/log', analyticsData);
  }
});

Kio estas malsama

La ĉefa avantaĝo de "sendBeacon" estas, ke viaj petoj efektive estos vicigitaj de la agento, kio signifas per la retumilo, kiu nuntempe ŝarĝas vian klienton. Tiel longe kiel reta konekto disponeblas, la datumoj tiam sendiĝas. Se neniuj datumoj disponeblas aŭ la uzanto fermas vian retprogramon (antaŭ ol la peto povus esti sendita), la retumilo tamen garantios, ke la peto estos transdonita, eventuale.

La aliaj oftaj petfunkcioj ne garantias, ke via peto estos sendita kiam uzanto fermos la retprogramon (ekzemple fermante la langeton). "sendBeacon" ankaŭ estas tute nesinkrona kaj ne enkondukas prokraston kiam vi navigas al alia paĝo en via retprogramo dum vi ankoraŭ sendas la analizajn datumojn por la paĝa historio de la uzanto.

Iomete plibonigu vian retprogramon

Se vi havas laŭmendan finpunkton por analizaj datumoj, vi certe provu ĉi tiun novan API. Bonvolu memori, ke uzanto eble nomos vin retprogramo per retumilo, kiu ne subtenas la API (kvankam ĉi tio estas tre neverŝajna), do vi povas iom post iom plibonigi vian programon per simpla kontrolo pri subteno antaŭ ol uzi ĝin.