0.20.6 • Published 3 months ago

@appsensorlike/appsensorlike_exec_mode_websocket_client_node v0.20.6

Weekly downloads
-
License
MIT
Repository
github
Last release
3 months ago

@appsensorlike/appsensorlike client over websocket. Please note that this code runs on node only.

Installation


npm i @appsensorlike/appsensorlike_exec_mode_websocket_client_node

Usage

Please mind, that for this example your module has to install also @appsensorlike/appsensorlike_exec_mode_websocket_server.

Please consider how the client is authenticated and authorized in @appsensorlike/appsensorlike_exec_mode_websocket_server.

import { AppSensorWebsocketExecClient } from '@appsensorlike/appsensorlike_exec_mode_websocket_client_node';
import { AppSensorWebsocketExecServer } from '@appsensorlike/appsensorlike_exec_mode_websocket_server';
import { AppSensorEvent, Category, DetectionPoint, DetectionSystem, User } from "@appsensorlike/appsensorlike/core/core.js";

const appSensorWebsocketExecServer = 
        new AppSensorWebsocketExecServer('appsensor-server-config.json',
                                'appsensor-websocket-request-handler-config.json');
await appSensorWebsocketExecServer.startWebSocketServer();

const appSensorWebsocketExecClient = 
        new AppSensorWebsocketExecClient('appsensor-websocket-event-manager-config.json');
//you are now able to get instance of AppSensorClient respectivly EventManager and to send events to the server
const eventManager = appSensorWebsocketExecClient.getAppSensorClient().getEventManager();

//following lines are added just for purpose of demonstration
//
const user1 = new User("user1");
const detectionPoint = new DetectionPoint(Category.REQUEST, "RE7");
const detectionSystem = new DetectionSystem("localhostme");

if (eventManager) {
    await eventManager.addEvent(new AppSensorEvent(user1, detectionPoint, detectionSystem)); 
    await eventManager.addEvent(new AppSensorEvent(user1, detectionPoint, detectionSystem)); //new instance every time to set timestamp
}

Here it is an example when your client runs along with your app on a separate node instance. Before running the code you have to have running server, which will accept your requests.

Please consider how the client is authenticated and authorized in @appsensorlike/appsensorlike_exec_mode_websocket_server.

import { AppSensorWebsocketExecClient } from '@appsensorlike/appsensorlike_exec_mode_websocket_client_node';
import { AppSensorEvent, Category, DetectionPoint, DetectionSystem, User } from "@appsensorlike/appsensorlike/core/core.js";

const appSensorWebsocketExecClient = 
        new AppSensorWebsocketExecClient('appsensor-websocket-event-manager-config.json');
//you are now able to get instance of AppSensorClient respectivly EventManager and to send events to the server
const eventManager = appSensorWebsocketExecClient.getAppSensorClient().getEventManager();

//following lines are added just for purpose of demonstration
//
const user1 = new User("user1");
const detectionPoint = new DetectionPoint(Category.REQUEST, "RE7");
const detectionSystem = new DetectionSystem("localhostme");

if (eventManager) {
    await eventManager.addEvent(new AppSensorEvent(user1, detectionPoint, detectionSystem)); 
    await eventManager.addEvent(new AppSensorEvent(user1, detectionPoint, detectionSystem)); //new instance every time to set timestamp
}

Configuration

You can configure the url to send request to and websocket options via AppSensorWebsocketExecClient constructor or configure it in appsensor-websocket-event-manager-config.json file in the working directory. You can copy the default configuration from this module's dist/execution-modes/appsensor-websocket/client-node/event. Corresponding schema file appsensor-websocket-client-config_schema.json is in the same directory.
The default url is ws://localhost:4500 . The implementation takes advantage of WS websocket module so you could check for websocket options here https://github.com/websockets/ws/blob/HEAD/doc/ws.md#new-websocketaddress-protocols-options .

TypeScript support

You need TypeScript version >= 4.7 in order the paths exported by the module to be resolved.