1. speed-limiter
Throttle the speed of streams
speed-limiter
Package: speed-limiter
Created by: alxhotel
Last modified: Wed, 18 May 2022 10:31:09 GMT
Version: 1.0.2
License: MIT
Downloads: 13,035
Repository: https://github.com/alxhotel/speed-limiter

Install

npm install speed-limiter
yarn add speed-limiter

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

RELATED POST

10 Must-Know Windows Shortcuts That Will Save You Time

10 Must-Know Windows Shortcuts That Will Save You Time

Arrays vs Linked Lists: Which is Better for Memory Management in Data Structures?

Arrays vs Linked Lists: Which is Better for Memory Management in Data Structures?

Navigating AWS Networking: Essential Hacks for Smooth Operation

Navigating AWS Networking: Essential Hacks for Smooth Operation

Achieving Stunning Visuals with Unity's Global Illumination

Achieving Stunning Visuals with Unity's Global Illumination

Nim's Hidden Gems: Lesser-known Features for Writing Efficient Code

Nim's Hidden Gems: Lesser-known Features for Writing Efficient Code