w3bstream-client-js
v3.1.0
Published
Official W3bstream Client for JS/TS
Downloads
520
Readme
w3bstream-client-js
The JS/TS Client for W3bstream integration on server. This library allows you to send messages to W3bstream using its API.
Table of Contents
Prerequisites
- Node.js v16 or higher
Getting started
Install w3bstream-client-js
via npm
npm install w3bstream-client-js
Example Code
Initialize client
import { W3bstreamClient } from "w3bstream-client-js";
const URL = "http_route";
const API_KEY = "api_key";
const client = new W3bstreamClient(URL, API_KEY);
Publish single message
// header should include device ID
const header = {
device_id: "device_001",
};
// payload can be an object
const payload = {
temperature: 25,
};
// or binary data
const payload = Buffer.from('{"temperature": 25}', "utf8");
const main = async () => {
try {
const res = await client.publishSingle(header, payload);
console.log(JSON.stringify(res.data, null, 2));
} catch (error) {
console.error(error);
}
};
main();
Preprocess your data before publishing
const events = rawData.map(({ id, temp }) => {
// each message should include header with device ID
const header = {
device_id: id,
};
// and payload with the data itself
const payload = {
temperature: temp,
};
return { header, payload };
});
Sending multiple messages
Basic usage
// events from previous example
client.publishEvents(events).subscribe((res) => {
console.log(res.data.length);
});
With more control
client.publishEvents(events).subscribe({
// will be called for each batch of messages
next: (res) => {
console.log(res.data.length);
},
error: (err) => {
console.log(err.message);
},
complete: () => {
console.log("publishing completed");
},
});
API
W3bstreamClient(url, apiKey, options)
Initializes the client.
url
: The URL of the W3bstream service.apiKey
: The API key of the W3bstream service.options
: An object that includes the following optional parameters:batchSize
: The number of events to publish in a single batch. Default:100
.batchMax
: The maximum number of events to publish in a single interval. Default:1000
.publishIntervalMs
: The interval between batche groups in milliseconds. Each batch group consist of 10 batches. Default:1000
.
client.publishSingle(header, payload)
Sends a message to the W3bstream service. Returns a promise that resolves with the server's response.
header
: An object that includes the following parameters:device_id
: The ID of the device that sent the message.event_type
: The type of the event. (Optional)timestamp
: The timestamp of the event. (Optional)
payload
: The message to send. Can be an object or binary data.
Returns a promise that resolves with the server's response.
client.publishEvents(events)
Sends multiple messages to the W3bstream service. Returns an observable that emits a promise for each batch of messages.
events
: An array of objects that include the following parameters:header
: An object that includes the following parameters:device_id
: The ID of the device that sent the message.event_type
: The type of the event. (Optional)timestamp
: The timestamp of the event. (Optional)
payload
: The message to send. Can be an object or binary data.
Returns an observable that emits a promise for each batch of messages.