speed-limiter
Throttle the speed of streams in NodeJS
Installation
npm install speed-limiter
Usage
const { ThrottleGroup } = require('speed-limiter')
const rate = 200 * 1000
const throttleGroup = new ThrottleGroup({ rate })
const throttle = throttleGroup.throttle()
let dataReceived = ''
const dataToSend = 'hello'
throttle.on('data', (data) => {
dataReceived += data.toString()
})
throttle.on('end', () => {
console.log('Ended')
})
throttle.write(dataToSend)
throttle.end()
API
const throttleGroup = new ThrottleGroup(opts)
Initialize the throttle group.
The param opts
can have these parameters:
{
enabled: Boolean,
rate: Number,
chunksize: Number,
}
Note: the rate
parameter is required
throttleGroup.getEnabled()
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.
throttleGroup.getRate()
Returns a number
.
Gets the bytes/sec rate at which the throttle group rate is set.
throttleGroup.getChunksize()
Returns a number
.
Gets the chunk size used in the rate limiter.
throttleGroup.setEnabled(enabled)
Used to disable or enabling the throttling of all the throttles of throttleGroup
.
throttleGroup.setRate(rate)
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:
{
enabled: Boolean,
rate: Number,
chunksize: Number,
group: ThrottleGroup,
}
If the group
parameter is null, then a new ThrottleGroup
will be created.
Note: the rate
parameter is required
throttle.getEnabled()
Returns a boolean
.
If true, the throttling is enabled for throttle
, otherwise not.
throttle.getGroup()
Returns the ThrottleGroup
of throttle
.
throttle.setEnabled(enabled)
Used to disable or enabling the throttling of throttle
.
License
MIT. Copyright (c) Alex