@strg/behave-tracking-client-lib

STRG.BeHave - Tracking Client Library

Usage no npm install needed!

<script type="module">
  import strgBehaveTrackingClientLib from 'https://cdn.skypack.dev/@strg/behave-tracking-client-lib';
</script>

README

BeHave Tracking Client

This library contains the BeHave tracking client, it is intended to use it inside a client application integration and not standalone.

Getting Started

Prerequisites

Specification

The tracking client library register in a global namespace and forward all valid events to the BeHave tracking websocket server, invalid events will be droped. The library communicates with BeHave.tracking-service.

How to use

config

const config = {
  NAMESPACE: 'test',
  ENDPOINT: ' wss://behave.test.at/ws/event',
  RECONNECT_TIMEOUT: 60000,
  CLIENT_STORAGE_NAMESPACE: 'test',
}

init

import {
  TrackerAPI,
  TrackerService,
  TrackerWS,
  ClientStorage,
} from '@strg-behave/tracking-client-lib'

const ws = new TrackerWS(config)
const storage = new ClientStorage(config)
const service = new TrackerService(ws, storage, config)
const api = new TrackerAPI(service, config)

track

The events can be send to the global namespace defined by config.NAMESPACE.

// assume global namespace is `data`
data = data || []
let event = {
  key: 'test', // required
  value: 'test', // required
  time: Date.now(), // optional
  content: 'https://www.test.at', // optional keys will be passed as plain string
}
data.push(event)

Where time and content are optional parameters, time will be set (if not provided) inside tracking service layer. The value of content will be hashed as CRC32 checksum and passed to the WebSocket when set.

Development

Installation

npm install

Testing

npm run test

Coverage Report

Starts an interactive http server on port 8888.

npm run coverage


ESLint

To check the code syntax integrity according to our ESLint specification run:

npm run lint

To autofix code syntax integrity run:

npm run lint:fix

Versioning

We use SemVer for versioning. For the versions available, see the tags on this repository.
To increase a version and tag in GIT run:

npm version major|minor|patch

Authors

  • Can Atesman - first implementation
  • Ralf Traunsteiner - second implementation, rewritten most of the code parts and lot of improvements, starts decoupeling
  • Nils Müller - reduced to tracking library functionality, reimplementation in layered architecture