WebSocketConnectionLimiter

@Service
class WebSocketConnectionLimiter(redisTemplate: StringRedisTemplate, rateLimitProperties: RateLimitProperties)(source)

Limitador de conexões WebSocket simultâneas por usuário.

Ao contrário do Rate Limiting tradicional (requisições/tempo), o WebSocket usa limitador de CONCORRÊNCIA (conexões simultâneas).

Isso evita:

  • Usuários abrindo muitas tabs/janelas

  • Ataques de exaustão de recursos

  • Memory leaks por conexões abandonadas

Estado armazenado no Redis para funcionar em cluster.

Constructors

Link copied to clipboard
constructor(redisTemplate: StringRedisTemplate, rateLimitProperties: RateLimitProperties)

Types

Link copied to clipboard
object Companion

Functions

Link copied to clipboard

Força a limpeza de todas as conexões de um usuário. Útil para logout ou kill switch.

Link copied to clipboard
fun disconnect(userId: String)

Registra o encerramento de uma conexão. Chamado quando o cliente desconecta.

Link copied to clipboard

Retorna o número atual de conexões de um usuário.

Link copied to clipboard
fun tryConnect(userId: String): Boolean

Tenta registrar uma nova conexão para o usuário.