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 b8f9ba3 feat: support setting time interval to report segments (#65) b8f9ba3 is described below commit b8f9ba35acc3f9ee746710577adbbb645680b16e Author: Fine0830 <fine0...@outlook.com> AuthorDate: Wed Jul 14 14:51:56 2021 +0800 feat: support setting time interval to report segments (#65) * feat: support setting time interval to report segments * docs: update changes and readme * docs: fix typo * fix: report error logs * fix: report error logs --- CHANGES.md | 4 ++++ README.md | 1 + src/monitor.ts | 1 + src/services/base.ts | 6 +++++- src/trace/segment.ts | 2 +- src/types.d.ts | 1 + 6 files changed, 13 insertions(+), 2 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 0821ef5..867da4a 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,9 @@ # Changes +## 0.7.0 + +1. Support setting time interval to report segments. + ## 0.6.0 1. Separate production and development environments when building. diff --git a/README.md b/README.md index 935ca4b..b0ecfb3 100644 --- a/README.md +++ b/README.md @@ -55,6 +55,7 @@ The register method supports the following parameters. |traceSDKInternal|Boolean|Support tracing SDK internal RPC.|false|false| |detailMode|Boolean|Support tracing http method and url as tags in spans.|false|true| |noTraceOrigins|(string \| RegExp)[]|Origin in the `noTraceOrigins` list will not be traced.|false|[]| +|traceTimeInterval|Number|Support setting time interval to report segments.|false|60000| ## Collect Metrics Manually Use the `setPerformance` method to report metrics at the moment of page loaded or any other moment meaningful. diff --git a/src/monitor.ts b/src/monitor.ts index c2cea24..aed46d5 100644 --- a/src/monitor.ts +++ b/src/monitor.ts @@ -32,6 +32,7 @@ const ClientMonitor = { traceSDKInternal: false, detailMode: true, noTraceOrigins: [], + traceTimeInterval: 60000, // 1min } as CustomOptionsType, register(configs: CustomOptionsType) { diff --git a/src/services/base.ts b/src/services/base.ts index fccf016..aa2d7c7 100644 --- a/src/services/base.ts +++ b/src/services/base.ts @@ -19,6 +19,7 @@ import { ErrorsCategory, GradeTypeEnum } from './constant'; import { ErrorInfoFields, ReportFields } from './types'; let jsErrorPv = false; +let interval: any; export default class Base { public logInfo: ErrorInfoFields & ReportFields & { collector: string } = { uniqueId: '', @@ -52,8 +53,11 @@ export default class Base { delete this.logInfo.collector; Task.addTask(this.logInfo, collector); Task.finallyFireTasks(); + if (interval) { + return; + } // report errors within 1min - setTimeout(() => { + interval = setInterval(() => { Task.fireTasks(); }, 60000); } diff --git a/src/trace/segment.ts b/src/trace/segment.ts index c5211ea..2bbf1bf 100644 --- a/src/trace/segment.ts +++ b/src/trace/segment.ts @@ -40,5 +40,5 @@ export default function traceSegment(options: CustomOptionsType) { } new Report('SEGMENTS', options.collector).sendByXhr(segments); segments = []; - }, 300000); + }, options.traceTimeInterval); } diff --git a/src/types.d.ts b/src/types.d.ts index b22714e..6c158e0 100644 --- a/src/types.d.ts +++ b/src/types.d.ts @@ -26,6 +26,7 @@ export interface CustomOptionsType extends CustomReportOptions { traceSDKInternal?: boolean; detailMode?: boolean; noTraceOrigins?: (string | RegExp)[]; + traceTimeInterval?: number; } export interface CustomReportOptions {