speed-limiter
Version:
Throttle the speed of streams
125 lines (78 loc) • 2.99 kB
Markdown
//img.shields.io/npm/v/speed-limiter.svg)](https://www.npmjs.com/package/speed-limiter)
[](https://github.com/alxhotel/speed-limiter/actions)
Throttle the speed of streams in NodeJS
```sh
npm install speed-limiter
```
```js
const { ThrottleGroup } = require('speed-limiter')
const rate = 200 * 1000 // 200 KB/s
const throttleGroup = new ThrottleGroup({ rate })
// Create a new throttle
const throttle = throttleGroup.throttle()
// Use it throttle as any other Transform
let dataReceived = ''
const dataToSend = 'hello'
throttle.on('data', (data) => {
dataReceived += data.toString()
})
throttle.on('end', () => {
console.log('Ended')
})
throttle.write(dataToSend)
throttle.end()
```
Initialize the throttle group.
The param `opts` can have these parameters:
```js
{
enabled: Boolean, // Enables/disables the throttling (defaul=true)
rate: Number, // Sets the max. rate (in bytes/sec)
chunksize: Number, // Sets the chunk size used (deault=rate/10)
}
```
Note: the `rate` parameter is required
Returns a `boolean`.
If true, the throttling is enabled for the whole `throttleGroup`, otherwise not.
However, if a specific `throttle` in the group has the throttling disabled, then only
that throttle will block the data.
Returns a `number`.
Gets the bytes/sec rate at which the throttle group rate is set.
Returns a `number`.
Gets the chunk size used in the rate limiter.
Used to disable or enabling the throttling of all the throttles of `throttleGroup`.
Sets the maxium rate (in bytes/sec) at which the whole group of throttles can pass data.
#### `throttleGroup.setChunksize(chunksize)`
Sets the chunk size used in the rate limiter.
#### `const throttle = new Throttle(opts)`
Initialize the throttle instance.
The param `opts` can have these parameters:
```js
{
enabled: Boolean, // Enables/disables the throttling for that throttle (default=true)
rate: Number, // Sets the max. rate (in bytes/sec)
chunksize: Number, // Sets the chunk size used (default=rate/10)
group: ThrottleGroup, // Sets the throttle group for that throttle (default=null)
}
```
If the `group` parameter is null, then a new `ThrottleGroup` will be created.
Note: the `rate` parameter is required
Returns a `boolean`.
If true, the throttling is enabled for `throttle`, otherwise not.
Returns the `ThrottleGroup` of `throttle`.
Used to disable or enabling the throttling of `throttle`.
MIT. Copyright (c) [Alex](https://github.com/alxhotel)
[![NPM Version](https: