bb-inspired
Version:
Core library for BB-inspired NestJS backend
36 lines (35 loc) • 1.14 kB
TypeScript
import { Socket } from 'socket.io';
export interface RateLimiterOptions {
maxConnectionsPerIp?: number;
maxMessagesPerMinute?: number;
maxSubscriptionsPerClient?: number;
blockDuration?: number;
autoDisconnect?: boolean;
enableBanning?: boolean;
banThreshold?: number;
banDuration?: number;
}
export declare class WebsocketRateLimiter {
private readonly options;
private readonly logger;
private ipConnections;
private clientMessages;
private clientSubscriptions;
private blockedIps;
private ipViolations;
private bannedIps;
constructor(options?: RateLimiterOptions);
isBanned(ip: string): boolean;
isBlocked(ip: string): boolean;
handleConnection(client: Socket): boolean;
handleDisconnect(client: Socket): void;
handleMessage(client: Socket): boolean;
handleSubscription(client: Socket, channel: string): boolean;
handleUnsubscription(client: Socket, channel: string): void;
blockIp(ip: string): void;
banIp(ip: string): void;
private recordViolation;
private resetMessageCounters;
private cleanup;
private getClientIp;
}