speed-limiter

Throttle the speed of streams

Usage no npm install needed!

<script type="module">
  import speedLimiter from 'https://cdn.skypack.dev/speed-limiter';
</script>

README

speed-limiter

NPM Version Build Status

Throttle the speed of streams in NodeJS

Installation

npm install speed-limiter

Usage

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()

API

const throttleGroup = new ThrottleGroup(opts)

Initialize the throttle group.

The param opts can have these parameters:

{
  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

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,     // 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

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