Browser Protocol

Browser protocol describes the data format between skywalking-client-js and the backend.

Overview

Browser protocol is defined in gRPC format and exposed in HTTP 1.1 for the browser.

Performance Data Report

Detailed information about data format can be found in BrowserPerf.proto.

POST http://localhost:12800/browser/perfData

Send a performance data object in JSON format.

Input:

{
  "service": "web",
  "serviceVersion": "v0.0.1",
  "pagePath": "/index.html",
  "redirectTime": 10,
  "dnsTime": 10,
  "ttfbTime": 10,
  "tcpTime": 10,
  "transTime": 10,
  "domAnalysisTime": 10,
  "fptTime": 10,
  "domReadyTime": 10,
  "loadPageTime": 10,
  "resTime": 10,
  "sslTime": 10,
  "ttlTime": 10,
  "firstPackTime": 10,
}

OutPut:

HTTP Status: 204

POST http://localhost:12800/browser/perfData/webVitals

Send a performance data object in JSON format. Since client-js 1.0.0, the following attached metrics are reported.

Input:

{
  "service": "web",
  "serviceVersion": "v0.0.1",
  "pagePath": "/index.html",
  "fmpTime": 10, // Deprecated since skywalking-client-js 1.0. This is no longer recommended. Please use the `useWebVitals` instead.
  /* NOTE, Safari does not support all core web vitals, and Firefox does not support `CLS`. */
  "clsTime": 10,
  "lcpTime": 10,
}

OutPut:

HTTP Status: 204

POST http://localhost:12800/browser/perfData/webInteractions

Send a performance data object in JSON format. Since client-js 1.0.0, the following attached metrics are reported.

Input:

[
  {
    "service": "web",
    "serviceVersion": "v0.0.1",
    "pagePath": "/index.html",
    "inpTime": 10,
  }
]

OutPut:

HTTP Status: 204

POST http://localhost:12800/browser/perfData/resources

Send a static resources data object in JSON format. Since client-js 1.0.0, the following attached metrics are reported.

Input:

[
  {
    "service": "web",
    "serviceVersion": "v0.0.1",
    "pagePath": "/index.html",
    "name": "vue.js",
    "duration": 600,
    "size": 100000,
    "protocol": "h2",
    "type": "script",
  }
]

OutPut:

HTTP Status: 204

Error Logs Report

POST http://localhost:12800/browser/errorLogs

Send an error log object list in JSON format.

Input:

[
    {
        "uniqueId": "55ec6178-3fb7-43ef-899c-a26944407b01",
        "service": "web",
        "serviceVersion": "v0.0.1",
        "pagePath": "/index.html",
        "category": "ajax",
        "message": "error",
        "line": 1,
        "col": 1,
        "stack": "error",
        "errorUrl": "/index.html"
    },
    {
        "uniqueId": "55ec6178-3fb7-43ef-899c-a26944407b02",
        "service": "web",
        "serviceVersion": "v0.0.1",
        "pagePath": "/index.html",
        "category": "ajax",
        "message": "error",
        "line": 1,
        "col": 1,
        "stack": "error",
        "errorUrl": "/index.html"
    }
]

OutPut:

HTTP Status: 204

POST http://localhost:12800/browser/errorLog

Send a single error log object in JSON format.

Input:

{
  "uniqueId": "55ec6178-3fb7-43ef-899c-a26944407b01",
  "service": "web",
  "serviceVersion": "v0.0.1",
  "pagePath": "/index.html",
  "category": "ajax",    
  "message": "error",
  "line": 1,
  "col": 1,
  "stack": "error",
  "errorUrl": "/index.html"
}

OutPut:

HTTP Status: 204

Note, BrowserErrorLog#uniqueId should be unique in the whole distributed environments.