You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by qi...@apache.org on 2022/05/23 14:54:35 UTC
[skywalking-client-js] branch master updated: feat: report data by `navigator.sendbeacon` when the event is `beforeunload` (#88)
This is an automated email from the ASF dual-hosted git repository.
qiuxiafan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/skywalking-client-js.git
The following commit(s) were added to refs/heads/master by this push:
new f568d4a feat: report data by `navigator.sendbeacon` when the event is `beforeunload` (#88)
f568d4a is described below
commit f568d4acdacda0f26bcf7eb2d11a55c902f1e313
Author: Alice2222 <62...@qq.com>
AuthorDate: Mon May 23 22:54:31 2022 +0800
feat: report data by `navigator.sendbeacon` when the event is `beforeunload` (#88)
---
src/errors/promise.ts | 1 +
src/services/report.ts | 12 ++++++++++++
src/services/task.ts | 3 ++-
src/trace/segment.ts | 2 +-
4 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/src/errors/promise.ts b/src/errors/promise.ts
index 543a9a1..19664e6 100644
--- a/src/errors/promise.ts
+++ b/src/errors/promise.ts
@@ -47,6 +47,7 @@ class PromiseErrors extends Base {
stack: event.reason.stack,
collector: options.collector,
};
+
this.traceInfo();
} catch (error) {
console.log(error);
diff --git a/src/services/report.ts b/src/services/report.ts
index 96ddae4..bc70e5f 100644
--- a/src/services/report.ts
+++ b/src/services/report.ts
@@ -65,5 +65,17 @@ class Report {
};
xhr.send(JSON.stringify(data));
}
+
+ public sendByBeacon(data: any) {
+ if (!this.url) {
+ return;
+ }
+ if (typeof navigator.sendBeacon === 'function') {
+ navigator.sendBeacon(this.url, JSON.stringify(data));
+ return;
+ }
+
+ this.sendByXhr(data);
+ }
}
export default Report;
diff --git a/src/services/task.ts b/src/services/task.ts
index 544c9d0..0b4b7cb 100644
--- a/src/services/task.ts
+++ b/src/services/task.ts
@@ -30,6 +30,7 @@ class TaskQueue {
if (!(this.queues && this.queues.length)) {
return;
}
+
new Report('ERRORS', this.collector).sendByXhr(this.queues);
this.queues = [];
}
@@ -39,7 +40,7 @@ class TaskQueue {
if (!this.queues.length) {
return;
}
- new Report('ERRORS', this.collector).sendByXhr(this.queues);
+ new Report('ERRORS', this.collector).sendByBeacon(this.queues);
});
}
}
diff --git a/src/trace/segment.ts b/src/trace/segment.ts
index b8ea454..cfc1558 100644
--- a/src/trace/segment.ts
+++ b/src/trace/segment.ts
@@ -30,7 +30,7 @@ export default function traceSegment(options: CustomOptionsType) {
if (!segments.length) {
return;
}
- new Report('SEGMENTS', options.collector).sendByXhr(segments);
+ new Report('SEGMENTS', options.collector).sendByBeacon(segments);
});
//report per options.traceTimeInterval min
setInterval(() => {