@aftership/rate-limiter

Rate limit for Node.js, with ioredis client

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
@aftership/rate-limiter
1123.0.24 years ago9 years agoMinified + gzip package size for @aftership/rate-limiter in KB

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.