Skip to content

alxhotel/speed-limiter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

Throttle the speed of streams in NodeJS

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published