Skip to content

RateLimiter

RateLimiter — classe para controle da taxa de requisições à Rest API. A instância singleton fica disponível através da propriedade rest.rateLimiter após a inicialização do Frame.

Limita automaticamente o número de requisições por segundo, enfileira as requisições quando o limite é excedido e tenta novamente as requisições ao receber um erro HTTP 429.

ts
import { RateLimiter } from '@flowlu/miniapp-jssdk'

Propriedades

lastRequestTime

Timestamp (ms) da última requisição enviada

ts
get lastRequestTime(): number

limit

Número máximo de requisições por segundo. O valor é preenchido a partir do contexto na primeira chamada à Rest API através de Rest.get() ou Rest.post(). Um valor -1 significa que o limite ainda não foi recebido do contexto

ts
get limit(): number

processing

Número de requisições atualmente em processamento

ts
get processing(): number

remaining

Número de requisições restantes antes de atingir o limite. O valor é atualizado ao receber cada resposta da Rest API

ts
get remaining(): number

reset

Timestamp (ms) após o qual o limite é redefinido. O valor é atualizado ao receber cada resposta da Rest API

ts
get reset(): number

Métodos

getInstance

Retorna a instância singleton atual de RateLimiter

ts
static getInstance(): RateLimiter

destroy

Remove inscrições e libera recursos

ts
destroy(): void

Exemplo

ts
import { App, RateLimiter, Rest } from '@flowlu/miniapp-jssdk'

await App.initializeFrame()

const rest = Rest.getInstance()
const rateLimiter = RateLimiter.getInstance()

// obter o usuário atual
const user = await rest.get('/core/user/get/')

// ler os valores atuais do limite de requisições
console.log({
  limit: rateLimiter.limit,
  remaining: rateLimiter.remaining,
  reset: rateLimiter.reset,
})
js
const App = window.FlowluMiniApp;

const frame = await App.initializeFrame();

// obter o usuário atual
const user = await frame.rest.get('/core/user/get/');

// ler os valores atuais do limite de requisições
console.log({
  limit: frame.rest.rateLimiter.limit,
  remaining: frame.rest.rateLimiter.remaining,
  reset: frame.rest.rateLimiter.reset,
});

Publicado sob a licença MIT.