@usslc/channels-api
Modular client to consume channels-api powered websocket services
Last updated 3 years ago by they4kman .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install @usslc/channels-api 
SYNC missed versions from official npm registry.

channels-api-client

Build Status npm version

This package aims to provide a simple, reliable, and generic interface to consume channels-api powered WebSocket APIs.

Features

  • Promises encapsulating the request/response cycle
  • Subscribe to updates with a callback
  • Automatically reconnect when connection is broken (with backoff — thanks to reconnecting-websocket)
  • Automatically restart subscriptions on reconnection
  • Requests are queued until a connection is made (no need to wait for connection before sending requests)

Install

npm install --save @usslc/channels-api

Usage

const channelsApi = require('channels-api');
const client = channelsApi.connect('wss://example.com');

client.create('people', {name: 'Alex'}).then(person => {
  console.info('Created:', person);
});

client.retrieve('people', 4).then(person => {
  console.info('Retrieved person 4:', person);
});

client.update('people', 4, {name: 'Johannes'}).then(person => {
  console.info('Changed name of person 4. Properties after change:', person);
});

client.delete('people', 4).then(() => {
  console.info('Deleted person 4. No one liked them, anyway :)');
});


// Subscribe to updates to any person
const subscription = client.subscribe('people', 'update', person => {
  console.info('A person was updated:', person);
});

// Stop listening for updates
subscription.cancel();


// Subscribe to updates to person 1
const personalSubscription = client.subscribe('people', 'update', 1, person => {
  console.info('Person 1 was updated:', person);
});

// Stop listening
personalSubscription.cancel();


// Make a generic request to a multiplexer stream
client.request('mystream', {key: 'value'}).then(response => {
  console.info('Got mystream response, yo:', response);
});

Configuration

The client can be customized by passing an object as the second argument to connect() or createClient(). The available options are described below.

const client = channelsApi.connect('wss://example.com', {
  preprocessPayload: (stream, payload, requestId) => {
    // Modify payload any way you see fit, before it's sent over the wire
    // For instance, add a custom authentication token:
    payload.token = '123';
    // Be sure not to return anything if you modify payload

    // Or, you can overwrite the payload by returning a new object:
    return {'this': 'is my new payload'};
  },

  preprocessMessage: (message) => {
    // The "message" is the final value which will be serialized and sent over the wire.
    // It includes the stream and the payload.

    // Modify the message any way you see fit, before its sent over the wire.
    message.token = 'abc';
    // Don't return anything if you modify message

    // Or, you can overwrite the the message by returning a new object:
    return {stream: 'creek', payload: 'craycrayload'};
  },

  // Options to be passed to ReconnectingWebsocket
  // See https://github.com/pladaria/reconnecting-websocket#configure for more info
  websocket: {
    constructor: isGlobalWebSocket() ? WebSocket : null,
    maxReconnectionDelay: 10000,
    minReconnectionDelay: 1500,
    reconnectionDelayGrowFactor: 1.3,
    connectionTimeout: 4000,
    maxRetries: Infinity,
    debug: false,
  }
});

Current Tags

  • 3.0.1                                ...           latest (3 years ago)

12 Versions

  • 3.0.1                                ...           3 years ago
  • 3.0.0                                ...           3 years ago
  • 2.0.0                                ...           3 years ago
  • 1.0.0                                ...           3 years ago
  • 0.1.0                                ...           3 years ago
  • 0.0.7                                ...           3 years ago
  • 0.0.6                                ...           3 years ago
  • 0.0.5                                ...           3 years ago
  • 0.0.4                                ...           3 years ago
  • 0.0.3                                ...           3 years ago
  • 0.0.2                                ...           3 years ago
  • 0.0.1                                ...           3 years ago
Downloads
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 1
Dependencies (5)
Dependents (0)
None

Copyright 2014 - 2016 © taobao.org |