İçeriğe geç
Pathrule

dokümanlar

Protokol ve toplayıcılar

Bir toplayıcının aldığı Signals protokolü (zarf, öğeler, boyut sınırları), SDK'nın toplayıcı yanıtlarını nasıl okuduğu ve nasıl yeniden denediği, Standalone modunda kendi HTTP toplayıcınızı nasıl çalıştıracağınız.

Bu sayfada

Standalone modunda SDK, sizin çalıştırdığınız bir HTTP toplayıcısına gönderim yapar. Bu sayfa, o toplayıcının ne aldığını ve nasıl yanıt vermesi gerektiğini anlatır. Pathrule Local ve Pathrule Cloud aynı protokolü konuşur; bu yüzden hedefi değiştirdiğinizde buradaki hiçbir şey değişmez.

Zarf

Protokolün sürümü 1'dir. SDK her POST isteğinde tek bir zarfı application/json olarak gönderir; sayfa kapanırken gönderilen beacon ise text/plain kullanır. Bir zarf en fazla 32.768 bayttır ve en fazla 50 öğe taşır.

AlanNe olduğu
schemaVersionProtokol sürümü.
idEn fazla 64 harf, rakam, _ veya -. Her yeniden denemede aynıdır; böylece toplayıcı bir zarfı yalnızca bir kez saklayabilir.
keyProje anahtarı. Yalnızca Cloud için.
environmentdevelopment, preview veya production.
releaseSürüm kimliği, en fazla 120 karakter.
connectionSDK'nın nasıl bağlandığı.
itemsBu zarftaki sinyaller ve bildirimler.

Her öğede type (signal veya declaration), kind (error veya event), fingerprint, countDelta, node (kod yolu), flow, label, message ve metadata bulunur. Tekrarlanan oluşumlar countDelta içinde toplanır; bu yüzden toplayıcı öğeleri saymak yerine sayımı bu alanla yapar.

Yanıtlar ve yeniden denemeler

YanıtSDK'nın yaptığı
2xxTeslim edildi.
401, 403Göndermeyi kalıcı olarak durdurur.
408, 429, 5xxYeniden dener.
Diğer tüm 4xxPaketi atar.

Yeniden denemeler 1, 5 ve 15 dakika sonra yapılır, en fazla 4 deneme olur ve SDK bekleyen en fazla 20 zarf tutar. Retry-After başlığı saniye cinsinden bir sayı olarak okunur.

Kendi toplayıcınızı çalıştırmak

Bir toplayıcı üç iş yapar: isteğin kimliğini doğrular, zarfı doğrular ve zarfı saklar ya da başka bir yere iletir.

import { normalizeEnvelope } from "@pathrule/signals/protocol";

// In your POST handler, after checking your own Authorization header:
const envelope = normalizeEnvelope(body, { requireKey: false, bytes: rawBody.length });

Kimlik doğrulamayı başka bir yolla yapıyorsanız (örneğin hızlı başlangıçtaki bearer başlığıyla) requireKey: false geçirin; boyut sınırının uygulanması için de ham boyutu iletin. Ardından:

  • Bir zarfı her id için yalnızca bir kez saklayın; yeniden denemeler aynı değeri kullanır.
  • Öğeleri, Pathrule'un yaptığı gibi environment, kind ve fingerprint'e göre gruplayın.
  • Zarf güvenceye alınır alınmaz 2xx döndürün; 401 veya 403 yanıtını yalnızca istemcinin durması gerektiğinde verin.