/trottola

Easy nodejs throttling

Primary LanguageJavaScriptMIT LicenseMIT

Trottola

unstable build status

A small library providing throttling methods

Installation

npm install trottola --save

Usage

  var trottola = require('trottola');  
  var redis = require('redis');

  var client = redis.createClient();        // Used to store client information
  var clientPub = redis.createClient();     // Used internally to set the throttling event timer
  var clientSub = redis.createClient();     // Used internally to be notified of the throttling event


  throttler = trottola({
                limit: 50,
                timeFrame: 600,
                redis: client,
                redisPub: clientPub,
                redisSub: clientSub
            });

  this.throttler.availableRequests("test", function(available, result) {

    var now = (new Date()).getTime() / 1000;

    console.log('limit: ' + result.limit);
    console.log('used: ' + result.used);
    console.log('reset: ' + result.reset);


    if (!available) {
        // Request limit reached
    } else {
        // Request limit not reached
    }

    console.log("reset in " + Math.round(result.reset - now));
  }

Tests

npm test

Contributing

In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code.

Release History

  • 0.1.3 - Fix: adapting the code to an API change in dtimer
  • 0.1.2 - Updated dtimer to fix an issue with Redis connections
  • 0.1.1 - README.md fix
  • 0.1.0 - Initial release