Skip to content
Meeko
Type to search the guides and the API reference. Open it from any page with / or Ctrl K; move with the arrow keys and open a result with Enter.
Get started

Contents

On this page

Not translated yet

This page has not been translated into English yet, so it is shown in Spanish.

SessionStore

interfaz

Almacén de sesiones. En producción SessionManager exige persistent: true, replace atómico y revokeFamily. Meeko incluye MemorySessionStore (desarrollo), RedisSessionStore y SqlSessionStore.

ts
import type { SessionStore } from "@meekojs/meeko/server";

Source code src/server/runtime/sessions.ts:135

Declaración #

ts
interface SessionStore<T = unknown> {
	readonly persistent?: boolean
	get(id: string): Promise<SessionRecord<T> | undefined>
	set(record: SessionRecord<T>): Promise<void>
	delete(id: string): Promise<void>
	replace?(previousId: string, record: SessionRecord<T>): Promise<boolean>
	revokeFamily?(familyId: string): Promise<void>
	subscribeRevocations?(listener: (familyId: string) => void): Unsubscribe | Promise<Unsubscribe>
	rateLimit?(key: string, windowMs: number): Promise<RateLimitHit>
	close?(): Promise<void>
}

Type parameters #

T = unknown

Datos de la aplicación en la sesión.

Example #

ts
import type { SessionRecord, SessionStore } from "@meekojs/meeko/server";

class LoggingStore<T> implements SessionStore<T> {
  readonly persistent = true;
  constructor(private readonly inner: Required<SessionStore<T>>) {}
  get(id: string) { return this.inner.get(id); }
  set(record: SessionRecord<T>) { return this.inner.set(record); }
  delete(id: string) { return this.inner.delete(id); }
  replace(previousId: string, record: SessionRecord<T>) { return this.inner.replace(previousId, record); }
  async revokeFamily(familyId: string) { console.info("revoke", familyId); await this.inner.revokeFamily(familyId); }
}

Miembros #

persistent #

propiedad sólo lectura opcional

readonly persistent?: boolean

Declara de forma explícita que los registros sobreviven a los reinicios del proceso.

get #

método

get(id: string): Promise<SessionRecord<T> | undefined>

Lee la sesión activa con ese ID, o undefined si no existe, caducó o ya no es la activa de su familia.

set #

método

set(record: SessionRecord<T>): Promise<void>

Guarda una sesión nueva.

delete #

método

delete(id: string): Promise<void>

Borra una sesión.

replace #

método opcional

replace?(previousId: string, record: SessionRecord<T>): Promise<boolean>

Sustituye de forma atómica un ID existente de la misma familia; false si ya no existe.

revokeFamily #

método opcional

revokeFamily?(familyId: string): Promise<void>

Revoca de forma atómica el ID activo de la familia, aunque el handle sea anterior a una rotación.

subscribeRevocations #

método opcional

subscribeRevocations?(listener: (familyId: string) => void): Unsubscribe | Promise<Unsubscribe>

Notifica las llamadas a revokeFamily de todas las instancias que comparten el store, para que se detengan las peticiones en curso y los sockets de esa familia. Se resuelve cuando las notificaciones ya llegan.

rateLimit #

método opcional

rateLimit?(key: string, windowMs: number): Promise<RateLimitHit>

Cuenta una petición en la ventana fija key de windowMs milisegundos y devuelve el total de la ventana y cuánto falta para la siguiente (desde 1.2). Lo usa la opción rateLimit de API y RPC; debe ser atómico entre instancias y rechazar si el almacenamiento falla, para que la petición se rechace. Sin él, los límites se cuentan en la memoria de cada instancia.

close #

método opcional

close?(): Promise<void>

Libera los recursos propios del store.

See also #

Was this page helpful?

Add a comment

It is sent when you choose “Yes” or “No”. Only the page, your answer and the comment are stored: no cookies and no personal data.

0 of 2000 characters

Edit on GitHub: packages/meeko/src/server/runtime/sessions.ts