Back to snippets

rate_limiter_flexible_memory_ip_based_http_server.ts

typescript

Basic 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);
rate_limiter_flexible_memory_ip_based_http_server.ts - Raysurfer Public Snippets