ServerRuntime
interfaz
Recursos de servidor de la aplicación, creados una vez por proceso o aislado: sesiones, servicios, política de Socket, origen público, observador de errores y cierre.
import type { ServerRuntime } from "@meekojs/meeko/server";Source code src/server/runtime/definition.ts:94
Declaración #
interface ServerRuntime<Services = unknown, Env = unknown> {
readonly sessions?: SessionManager<any>
readonly services?: ServerServices<Services, Env>
readonly socket?: {
readonly pubsub?: SocketPubSub
readonly onDeliveryError?: (error: unknown, context: SocketDeliveryErrorContext) => void
readonly allowedOrigins?: readonly string[]
readonly maxMessageBytes?: number
readonly maxBufferBytes?: number
readonly maxPendingDeliveries?: number
readonly sessionRefreshMs?: number
}
readonly publicOrigin?: string
readonly onError?: ServerErrorObserver
readonly processErrors?: ProcessErrorPolicy | false
readonly close?: () => void | Promise<void>
}Type parameters #
-
Services= unknown Tipo de los servicios.
-
Env= unknown Tipo de las variables o bindings del entorno.
Example #
import { MemorySessionStore, SessionManager } from "@meekojs/meeko/server";
import type { ServerRuntime } from "@meekojs/meeko/server";
const runtime: ServerRuntime<{ readonly startedAt: number }> = {
sessions: new SessionManager({ store: new MemorySessionStore(), production: false }),
services: { startedAt: Date.now() },
socket: { maxMessageBytes: 64 * 1024 },
publicOrigin: "https://example.com",
onError: (error, requestId) => console.error("request failed", requestId, error),
};Propiedades #
sessions
#
readonly sessions?: SessionManager<any>Gestor de sesiones. En producción necesita un store persistente. Desde 1.2 es opcional: sin
él, Meeko usa memoria en desarrollo y, en producción, Redis con MEEKO_REDIS_URL (véase
Autenticación).
services
#
readonly services?: ServerServices<Services, Env>Se expone como RequestContext.services a páginas, API, RPC y canales Socket.
socket
#
readonly socket?: {
readonly pubsub?: SocketPubSub
readonly onDeliveryError?: (error: unknown, context: SocketDeliveryErrorContext) => void
readonly allowedOrigins?: readonly string[]
readonly maxMessageBytes?: number
readonly maxBufferBytes?: number
readonly maxPendingDeliveries?: number
readonly sessionRefreshMs?: number
}Política de Socket.
publicOrigin
#
readonly publicOrigin?: stringOrigen público de la aplicación, como https://example.com tras un proxy TLS. Las
comprobaciones de Origin de HTTP y de Socket se comparan con él.
onError
#
readonly onError?: ServerErrorObserverRecibe los fallos internos con su ID de petición; nunca se envían a los clientes. Desde 1.3,
también los fallos del proceso (promesas rechazadas sin manejar y excepciones no capturadas),
con un tercer argumento que los identifica.
processErrors
#
readonly processErrors?: ProcessErrorPolicy | falseQué hacer con las promesas rechazadas sin manejar y las excepciones no capturadas del proceso.
Por defecto, un rechazo se informa a onError y el servidor sigue atendiendo, y una excepción
se informa y cierra el servidor de forma ordenada con código 1. false deja los dos casos al
runtime. Se aplica en meeko dev, en las salidas de meeko build y en serveNode y
serveDeno con handleSignals.
close
#
readonly close?: () => void | Promise<void>Libera los recursos del runtime después de cerrar sus sesiones.
See also #
- Server runtime Framework full-stack