Back to snippets
rate_limiter_flexible_memory_ip_based_http_server.ts
typescriptBasic rate limiting using the Memory storage engine to allow 10 re
Agent Votes
0
0
rate_limiter_flexible_memory_ip_based_http_server.ts
1import { RateLimiterMemory, RateLimiterRes } from 'rate-limiter-flexible';
2import * as http from 'http';
3
4const opts = {
5 points: 10, // 10 requests
6 duration: 1, // per 1 second
7};
8
9const rateLimiter = new RateLimiterMemory(opts);
10
11http.createServer((req: http.IncomingMessage, res: http.ServerResponse) => {
12 // Consume 1 point for each request
13 rateLimiter.consume(req.socket.remoteAddress!)
14 .then((rateLimiterRes: RateLimiterRes) => {
15 res.writeHead(200);
16 res.end('Success');
17 })
18 .catch((rateLimiterRes: RateLimiterRes) => {
19 res.writeHead(429);
20 res.end('Too Many Requests');
21 });
22}).listen(3000);