@aftership/rate-limiter

Rate limit for Node.js, with ioredis client

Usage no npm install needed!

<script type="module">
  import aftershipRateLimiter from 'https://cdn.skypack.dev/@aftership/rate-limiter';
</script>

README

rate-limiter

Build Status codecov.io

node npm npm

Rate limit for Node.js, with ioredis client

Installation

npm install @aftership/rate-limiter

Dependency

The client must be an instance of ioredis library.

Examples

const Limiter = require('@aftership/rate-limiter');
const Redis = require('ioredis');

const redisClient = new Redis({
    port: 6379,
    host: '127.0.0.1',
    db: 0
});

redisClient.on('connect', (err) => {
    if (err) {
        console.log(err);
        return;
    }

    // limit to 2 request per every 10s
    const limiter = new Limiter({
        redisClient,
        key: 'the-user-api-key',
        limit: 2, // default is 10
        duration: 10 // default is 60s
    });

    limiter
        .get()
        .then((result) => {
            console.log(result);

            if (result.remaining >= 0) {
                console.log('I can do the request!');
            } else {
                console.log(`I run out of limit! Try again after ${result.reset} second.`);
            }
            process.exit(0);
        })
        .catch((e) => {
            console.log(e);
        });
});

Change log

Please refer to release page

License

Copyright (c) 2019 AfterShip

Licensed under the MIT license.