Files
Sheep-Service/web/lib/components/metrics.js
Rozenrod 85483b85bb Додан моніторінг застосунку
Додани веб компоненти карточок територій та повідомлень
2025-12-08 00:14:56 +02:00

56 lines
1.8 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
let mws;
const RECONNECT_INTERVAL = 3000;
let isConnectedMetrics = false;
function setupFrontendMetrics() {
console.log("[Metrics] Спроба підключення до метрик...");
mws = new WebSocket(CONFIG.metrics);
mws.onopen = () => {
console.log("[Metrics] З'єднання встановлено");
isConnectedMetrics = true;
// Відправляємо один раз навігацію та ресурси
sendMetrics();
};
mws.onclose = () => {
console.warn("[Metrics] З'єднання розірвано");
console.log(`[Metrics] Спроба перепідключення`);
isConnectedMetrics = false;
// Спроба перепідключення через заданий інтервал
setTimeout(setupFrontendMetrics, RECONNECT_INTERVAL);
};
mws.onerror = (err) => {
console.error("[Metrics] Помилка", err);
mws.close(); // Примусово закриваємо для запуску логіки перепідключення
};
}
async function sendMetrics() {
if (isConnectedMetrics) {
const perf = performance;
const payload = {
type: "frontend_metrics",
memory: perf.memory || null,
resources: perf.getEntriesByType("resource").slice(0, 500),
id: USER.id
};
mws.send(JSON.stringify(payload));
}
}
window.addEventListener('popstate', () => {
console.log("[Metrics] Запуск sendMetrics після popstate");
sendMetrics();
});
window.addEventListener('click', (e) => {
const target = e.target.closest('[data-route]');
if (!target || !target.href) return;
console.log("[Metrics] Запуск sendMetrics після click");
sendMetrics();
});