npm package: @radicalbit/helicon-node-sdk
Description: This module contains the NodeJs sdk for Helicon _publish_ and _subscribe_ operations.
Author: radicalbit
Latest version: 4.0.2

# Helicon node sdk #

This module contains the NodeJs sdk for Helicon _publish_ and _subscribe_ operations.

Helicon is a simple, scalable, robust, code-free and generic platform to enable and productise the next generation of "online modified", real-time event stream ML/AI models.

## Publish

_publish_ operations can be performed by using the `HeliconWriteClient` class exported by the library.

To initialize a new `HeliconWriteClient` instance, the user is tasked to fill all the required parameters of the constructor such as:

 - The address where the Host is located
 - The port to which the Host is bind (OPTIONAL: default value is `443`, can be omitted)
 - The http protocol to which the Host is available (OPTIONAL: default value is `https`, can be omitted)
 - The rest of the authentication parameters such as Client Secret, clientId and Tenant

Each of these parameters can be found (pre-filled) in the "Setup" section of a newly created stream.

After a `HeliconWriteClient` has been initialized, the user can send data to the stream thanks to the `write(streamName, payload)` method; An usage example is shown below: 

```javascript
const { HeliconWriteClient } = require("@radicalbit/helicon-node-sdk");

const host = "<host>";
const port = 0;
const clientId = "<client-id>";
const clientSecret = "<client-secret>";
const tenant = "<tenant-name>";
const protocol = "<http-protocol>";

const payload = {
	"name": "record",
	"temperature": "29"
};

const heliconWriteClient = new HeliconWriteClient(host, clientId, clientSecret, tenant, port, protocol);

heliconWriteClient.write("<streamName>", payload).then(
	() => console.log("payload published!"),
	(errorMessage) => console.error(errorMessage)
);
```

In case port and/or protocol are equal to the default values they can be omitted in this way:
Both omitted
```javascript
const heliconWriteClient = new HeliconWriteClient(host, clientId, clientSecret, tenant);
```
Protocol omitted
```javascript
const heliconWriteClient = new HeliconWriteClient(host, clientId, clientSecret, tenant, port);
```
Port omitted (must be set as `undefined` because of the order of the optional fields)
```javascript
const heliconWriteClient = new HeliconWriteClient(host, clientId, clientSecret, tenant, undefined, protocol);
```

## Subscribe

_subscribe_ operations can be performed by using the `HeliconSubscribeClient` class exported by the library.

To initialize a new `HeliconSubscribeClient` instance, the user is tasked to fill all the required parameters of the constructor such as:

 - The address where the Host is located
 - The port to which the Host is bind (OPTIONAL: default value is `443`, can be omitted)
 - The http protocol to which the Host is available (OPTIONAL: default value is `https`, can be omitted)
 - The rest of the authentication parameters such as Client Secret, clientId and Tenant

Each of these parameters can be found (pre-filled) in the "Setup" section of a newly created stream.

After a `HeliconSubscribeClient` has been initialized, the user can receive the events from the stream thanks to the `subscribe(streamDisplaName)` method; An usage example is shown below: 

```javascript
const { HeliconSubscribeClient } = require("@radicalbit/helicon-node-sdk");

const host = "<host>";
const port = 0;
const clientId = "<client-id>";
const clientSecret = "<client-secret>";
const tenant = "<tenant-name>";
const protocol = "<http-protocol>";

const heliconSubscribeClient = new HeliconSubscribeClient(host, clientId, clientSecret, tenant, port, protocol);

heliconSubscribeClient.subscribe("<streamName>").onData(
  (data) => console.log(data)
);
```

In case port and/or protocol are equal to the default values they can be omitted in this way:
Both omitted
```javascript
const heliconSubscribeClient = new HeliconSubscribeClient(host, clientId, clientSecret, tenant);
```
Protocol omitted
```javascript
const heliconSubscribeClient = new HeliconSubscribeClient(host, clientId, clientSecret, tenant, port);
```
Port omitted (must be set as `undefined` because of the order of the optional fields)
```javascript
const heliconSubscribeClient = new HeliconSubscribeClient(host, clientId, clientSecret, tenant, undefined, protocol);
```

## Support
We're always happy to help with any other questions you might have! [Send us an email](mailto:support@radicalbit.io).