🚀 Socket Launch Week 🚀 Day 4: Introducing Historical Analytics.Learn More
Socket
Sign inDemoInstall
Socket

superagent-load-balancer

Package Overview
Dependencies
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

superagent-load-balancer

load balancer plugin for superagent

2.0.3
latest
Source
npm
Version published
Weekly downloads
2.9K
-47.93%
Maintainers
1
Weekly downloads
 
Created
Source

superagent-load-balancer

Build Status Coverage Status npm Github Releases

Load balancer plugin for superagent

Installation

$ npm install superagent-load-balancer

Examples

View the ./examples directory for working examples.

API

get

  • backends the backend list

    • name The name of backend

    • host The host of backend

    • protocol The protocol, optional, default is 'http'

    • ip The ip of backend, optional

    • port The port of backend, optional

    • weight The weight of backend, it is for 'round-robin'

    • backup Set the backend as backup, optional

  • type balance algorithm: url, leastconn, round-robin, first, url-path, default is round-robin

const request = require('superagent');
const Balancer = require('superagent-load-balancer');
const balancer = new Balancer([
  {
    host: 'domain.com',
    ip: '192.168.1.1',
    port: 8080,
    weight: 10,
  },
  {
    host: 'domain.com',
    ip: '192.168.1.2',
    port: 8080,
    weight: 2,
  },
]);
const plugin = balancer.plugin();

request.get('/user')
  .use(plugin)
  .then((res) => {
    console.info(res.body);
  })
  .catch(console.error);

startHealthCheck

  • options {ping: function, interval: ms}

    • ping ping function, the function will return promise. If resolve, the backend is healthy. If reject, the backend is sick.

    • ms check interval

    • window each check the total count of ping

    • threshold each check the healthy count is bigger than threshold, the backend is healthy. Otherwise is sick

const request = require('superagent');
const Balancer = require('superagent-load-balancer');
const balancer = new Balancer([
  {
    host: 'domain1.com',
    weight: 10,
  },
  {
    host: 'domain2.com',
    weight: 2,
  },
]);
const ping = (backend) => {
  const url = `http://${backend.host}/ping`;
  return request.get(url).timeout(300);
};
balancer.startHealthCheck({
  ping,
});

const plugin = balancer.plugin();

request.get('/user')
  .use(plugin)
  .then((res) => {
    console.info(res.body);
  }).catch(console.error);

on

Add listener function to healthy or sick event

const request = require('superagent');
const Balancer = require('superagent-load-balancer');
const balancer = new Balancer([
  {
    host: 'domain1.com',
    weight: 10,
  },
  {
    host: 'domain2.com',
    weight: 2,
  },
]);
const ping = (backend) => {
  const url = `http://${backend.host}/ping`;
  return request.get(url).timeout(300);
};
balancer.startHealthCheck({
  ping,
});

balancer.on('healthy', (server) => {
  console.info(server);
});
balancer.on('sick', (server) => {
  console.info(server);
});

const plugin = balancer.plugin();

request.get('/user')
  .use(plugin)
  .then((res) => {
    console.info(res.body);
  }).catch(console.error);

getAvailableServers

Get the available server list. It is not disabled and backup.

const request = require('superagent');
const Balancer = require('superagent-load-balancer');
const balancer = new Balancer([
  {
    host: 'domain1.com',
    weight: 10,
  },
  {
    host: 'domain2.com',
    weight: 2,
    backup: true,
  },
]);
const ping = (backend) => {
  const url = `http://${backend.host}/ping`;
  return request.get(url).timeout(300);
};
balancer.startHealthCheck({
  ping,
});
// [ { id: '51d27b36cb9c34ff', host: 'domain1.com', weight: 10 } ]
console.info(balancer.getAvailableServers());

addAlgorithm

Add the custom load balance algorithm

  • name The algorithm's name

  • fn The algorithm, it should return an integer.

const request = require('superagent');
const Balancer = require('superagent-load-balancer');
const balancer = new Balancer([
  {
    host: 'domain1.com',
  },
  {
    host: 'domain2.com',
  },
], 'getByUrl');
balancer.addAlgorithm('getByUrl', (request) => {
  return request.url.length;
});

const plugin = balancer.plugin();

request.get('/user')
  .use(plugin)
  .then((res) => {
    console.info(res.body);
  })
  .catch(console.error);

License

MIT

Keywords

superagent

FAQs

Package last updated on 03 Mar 2017

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts