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 {

Reply via email to