# socket-load-balancer

> A load balancer that works at TCP/Unix Socket level

Latest version **0.0.9** (published 2015-03-16) · 0 weekly downloads

## Install

```sh
npm install socket-load-balancer
pnpm add socket-load-balancer
yarn add socket-load-balancer
bun add socket-load-balancer
```

## Health

**Score 10/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; low quality score; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.0.9 |
| Published | 2015-03-16 |
| First published | 2014-11-12 |
| Weekly downloads | 0 |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >=0.8.0 |
| Dependencies | 0 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 3 |
| Author | Carlo BERNASCHINA |
| Maintainers | b3rn475 |
| Keywords | socket, balancer |

## Links

- npm: https://www.npmjs.com/package/socket-load-balancer
- Repository: http://github.com/B3rn475/socket-load-balancer
- Homepage: https://github.com/B3rn475/socket-load-balancer
- Issues: https://github.com/B3rn475/socket-load-balancer/issues
- npm.io page: https://npm.io/package/socket-load-balancer

## Alternatives

- [@opentelemetry/exporter-zipkin](https://npm.io/package/@opentelemetry/exporter-zipkin.md) — 14.8M weekly downloads
- [pusher-js](https://npm.io/package/pusher-js.md) — 2.0M weekly downloads
- [browserify](https://npm.io/package/browserify.md) — 1.7M weekly downloads
- [sqs-consumer](https://npm.io/package/sqs-consumer.md) — 1.7M weekly downloads
- [@sanity/eventsource](https://npm.io/package/@sanity/eventsource.md) — 930.8K weekly downloads

## Recent versions

- 0.0.9 (latest) — 2015-03-16
- 0.0.8 — 2015-03-16
- 0.0.7 — 2015-03-15
- 0.0.6 — 2015-03-15
- 0.0.4 — 2015-02-20
- 0.0.3 — 2015-01-28
- 0.0.2 — 2014-11-12
- 0.0.1 — 2014-11-12

## README

socket-load-balancer
---

[![NPM Version][npm-image]][npm-url]

This is a load balancer that works at TCP/Unix Socket level and distributes connections across different servers.

__Example:__

```js
var slb = require("socket-load-balancer");

var router = slb.routers.RoundRobin({
    routes: [
        {port: 3001},
        {port: 3002}
    ]
});

var server = slb.Server({
    router: router
})
server.listen(3000);
```

Router
---
The router is the object responsible of decide to which destination forward a request.

A router can be a function:

```js
var slb = require("socket-load-balancer");

var server = slb.Server({
    router: function (request) {
        request.forward({port: 3001}); // not so smart router
    }
})
server.listen(3000);
```

or can be an object with a manage method

```js
var slb = require("socket-load-balancer");

var server = slb.Server({
    router: {
        manage: function (request) {
            request.forward({port: 3001}); // still not so smart router
        }
    }
})
server.listen(3000);
```

There are already 2 Routers available:

 - __RoundRobin__ Dispatches requests to a group of routes in a Round-Robin fashion (every request is forwarded to a different route in a circular order)
 - __LeastUsed__ Dispatches requests to a group of routes in a Least Used fashion (every request is forwarded to the route that has the lowest number of active connections)

They both have a common interface:

 - __addRoute(__ route __)__ adds a new route
 - __removeRoute(__ route __)__ removes an existing route
 
Timeout
---
 
 You can optionally activate a timeout in order to close connections if unused for a certain ammount of time.
 
 ```js
var slb = require("socket-load-balancer");

var router = slb.routers.RoundRobin({
    routes: [
        {port: 3001},
        {port: 3002}
    ]
});

var server = slb.Server({
    router: router
})
server.setTimeout(120000);
server.listen(3000);
```

[npm-image]: https://img.shields.io/npm/v/socket-load-balancer.svg?style=flat
[npm-url]: https://npmjs.org/package/socket-load-balancer

---
_Source: https://npm.io/package/socket-load-balancer · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
