UNPKG

bb-inspired

Version:

Core library for BB-inspired NestJS backend

36 lines (35 loc) 1.14 kB
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; }