MCPcopy
hub / github.com/soketi/soketi / RateLimiter

Class RateLimiter

src/rate-limiters/rate-limiter.ts:11–66  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

9import { WebSocket } from 'uWebSockets.js';
10
11export class RateLimiter implements RateLimiterInterface {
12 /**
13 * Rate Limiter driver.
14 */
15 public driver: RateLimiterInterface;
16
17 /**
18 * Initialize the rate limiter driver.
19 */
20 constructor(server: Server) {
21 if (server.options.rateLimiter.driver === 'local') {
22 this.driver = new LocalRateLimiter(server);
23 } else if (server.options.rateLimiter.driver === 'redis') {
24 this.driver = new RedisRateLimiter(server);
25 } else if (server.options.rateLimiter.driver === 'cluster') {
26 this.driver = new ClusterRateLimiter(server);
27 } else {
28 Log.error('No stats driver specified.');
29 }
30 }
31
32 /**
33 * Consume the points for backend-received events.
34 */
35 consumeBackendEventPoints(points: number, app?: App, ws?: WebSocket): Promise<ConsumptionResponse> {
36 return this.driver.consumeBackendEventPoints(points, app, ws);
37 }
38
39 /**
40 * Consume the points for frontend-received events.
41 */
42 consumeFrontendEventPoints(points: number, app?: App, ws?: WebSocket): Promise<ConsumptionResponse> {
43 return this.driver.consumeFrontendEventPoints(points, app, ws);
44 }
45
46 /**
47 * Consume the points for HTTP read requests.
48 */
49 consumeReadRequestsPoints(points: number, app?: App, ws?: WebSocket): Promise<ConsumptionResponse> {
50 return this.driver.consumeReadRequestsPoints(points, app, ws);
51 }
52
53 /**
54 * Create a new rate limiter instance.
55 */
56 createNewRateLimiter(appId: string, maxPoints: number): RateLimiterAbstract {
57 return this.driver.createNewRateLimiter(appId, maxPoints);
58 }
59
60 /**
61 * Clear the rate limiter or active connections.
62 */
63 disconnect(): Promise<void> {
64 return this.driver.disconnect();
65 }
66}

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected