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.
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.
| Alan | Ne olduğu |
|---|---|
schemaVersion | Protokol sürümü. |
id | En fazla 64 harf, rakam, _ veya -. Her yeniden denemede aynıdır; böylece toplayıcı bir zarfı yalnızca bir kez saklayabilir. |
key | Proje anahtarı. Yalnızca Cloud için. |
environment | development, preview veya production. |
release | Sürüm kimliği, en fazla 120 karakter. |
connection | SDK'nın nasıl bağlandığı. |
items | Bu 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ıt | SDK'nın yaptığı |
|---|---|
2xx | Teslim edildi. |
401, 403 | Göndermeyi kalıcı olarak durdurur. |
408, 429, 5xx | Yeniden dener. |
Diğer tüm 4xx | Paketi 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
idiç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
2xxdöndürün;401veya403yanıtını yalnızca istemcinin durması gerektiğinde verin.