1.1.7 • Published 7 months ago
@pulsoid/socket v1.1.7
pulsoid-socket
Zero dependency client for consuming Heart Rate Data from pulsoid-api.
Getting started
To install the package with npm, run:
npm install @pulsoid/socketor with yarn:
yarn add @pulsoid/socketBasic usage
In order to use the client, you need to have a valid authorization token. Check out how to get one here;
import PulsoidSocket from '@pulsoid/socket';
const pulsocket = new PulsoidSocket('YOUR_AUTH_TOKEN');
pulsocket.on('open', (event) => {
console.log('Start listening to heart rate data');
});
pulsocket.on('heart-rate', (data) => {
console.log(`Current heart rate is ${data.heartRate}`);
});
pulsocket.on('close', (event) => {
console.log('Stop listening to heart rate data');
});
pulsocket.connect();Using CDN
You can also use the client directly from CDN. The client is available on unpkg and jsdelivr.
Check the codepen example on basic PulsoidSocket usage with CDN
To add Pulsoid socket put this in head tag of your html
<script crossorigin src="https://unpkg.com/@pulsoid/socket@1.1.1/dist/index.js"></script>Then, in your js code you can init and use pulsoid socket like this
const pulsocket = new PulsoidSocket('REPLACE WITH YOUR TOKEN');
console.log(pulsocket.isConnected());
pulsocket.on('open', () => {
console.log('Connected');
});
pulsocket.on('heart-rate', (data) => {
console.log(data);
console.log(`Current heart rate is ${data.heartRate}`);
});
pulsocket.connect();API
List of available Methods on PulsoidSocket instance
| Method | Description |
|---|---|
constructor(token: string, options?: PulsoidSocketOptions) | Creates a new instance of the client. |
connect() | Connects to the websocket server |
disconnect() | Disconnects from the websocket server |
on(eventType: EventType, callback: Callback | Adds a listener for the specified event type. |
off(eventType: EventType, callback?: Callback) | Removes a listener for the specified event type. Removes all handlers if callback parameter is not specified |
isConnected() | Returns true if socket connection is alive |
List of available EventType's for on method
| Event Type | Callback Type | Description |
|---|---|---|
'open' | (event: Event) => void | Called when the connection is established |
'heart-rate' | (heartRate: HeartRateMessage) => void | Called when heart rate message is recieved |
'close' | (event: CloseEvent) => void | Called when the connection is closed |
'error' | (error: PulsoidSocketError) => void | Called when an error occurs |
'online' | () => void | Called when heart rate monitor device sends first message |
'offline' | () => void | Called when there are no incomming messages from heart rate monitor device for more than 30 seconds |
'reconnect' | (event: {attempt: number}) => void | Called when the client is trying to reconnect |
PulsoidSocketOptions interface:
interface PulsoidSocketOptions {
// Reconnect timing formula:
// Math.min(maxInterval, minInterval * Math.pow(2, attempt))
reconnect?: {
// Turn on/off the reconnect option. true by default
enabled?: boolean;
// Base value for reconnect interval. 2000 by default
reconnectMinInterval?: number;
// Max value for reconnect interval. 10000 by default
reconnectMaxInterval?: number;
// Number of attempts before stopping the reconect. 10 000 by default. trying to reconnect really hard
reconnectAttempts?: number;
};
}HeartRateMessage format:
interface HeartRateMessage {
measuredAt: number; // Unix timestamp
heartRate: number; // Heart rate in BPM
}PulsoidSocketError interface:
interface PulsoidSocketError {
code: number; // Error code
}specification of error codes: | Code | Description | | ---- | ----------- | | 412 | User doesn't have any heart rate data |