@bancolombia/chanjs-client
v0.2.0
Published
AsycnDataflow websocket browser client. By Bancolombia
Downloads
14
Readme
Client JS
Javascript library for async data flow implementation for browsers.
How to use
you need to have a running instances of async-dataflow-channel-sender
Install
npm i @bancolombia/chanjs-client --save
AsyncClient basic usage example
You can understand better the flow with this sequence diagram.
import { AsyncClient } from '@bancolombia/chanjs-client';
...
const client = new AsyncClient({
socket_url: "wss://some.domain:8984/socket",
channel_ref: "some_channel_ref",
channel_secret: "secret_from_some_auth_service",
heartbeat_interval: 200
});
...
Configuration parameters
| Parameters | Description | Default Value |
| ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | ------------- |
| socket_url | async-dataflow-channel-sender cluster url | |
| channel_ref | channel getted from rest service of async-dataflow-channel-sender | |
| channel_secret | token getted from rest service of async-dataflow-channel-sender | |
| heartbeat_interval | time in milliseconds to verify socket connection this parameter must be less than the socket_idle_timeout on the channel sender | 750 |
| enable_binary_transport | boolean parameter to indicate use binary protocol | false |
| dedupCacheDisable | boolean flag to control dedup operations of messages by its message_id
. If true
no dedup operation will be performed. | false |
| dedupCacheMaxSize | max ammount of elements to cache in the dedup process. Only if dedupCacheDisable
is false. | 500 |
| dedupCacheTtl | time to live of cached elements in the dedup operation (in minutes). Only if dedupCacheDisable
is false. | 15 |
Subscribing to events
client.listenEvent("event.some-name", (message) =>
someCallback(message.payload)
);
You can also use amqp-match style name expressions when susbscribing to events. Examples:
client.listenEvent("event.#", (message) => someCallback(message.payload));
client.listenEvent("event.some.*", (message) => someCallback(message.payload));
Messages will be delivered at least once, as Channel-Sender implements delivery guarantee. If your application is sensible to the reception of eventually duplicated messages, you can make use of the simple dedup operation this client provides, by caching message_ids by certain time and only invokig your callback once, or by implementing your own dedup operation.