Skip to content

Configuración de la Aplicación

Sword utiliza thisconfig para cargar uno o múltiples archivos TOML.

Por defecto, ApplicationBuilder carga config/config.toml durante la inicialización. Si el archivo no existe o contiene TOML inválido, la aplicación falla durante la construcción.

Si necesitas otra ruta, puedes construir la aplicación con:

  • Application::from_config(...).
  • Application::from_config_path(...).

Sección [application]

Esta sección contiene valores generales de la aplicación:

KeyTipoDefaultDescripción
nameOption<String>NoneNombre de la aplicación
environmentOption<String>NoneNombre del entorno
graceful-shutdownboolfalseHabilita apagado elegante al recibir señales de terminación
Ejemplo en formato TOML
toml
[application]
name = "My Sword App"
environment = "development"
graceful-shutdown = true

Configuración especifica para tipos de Aplicación

Como habrás visto en la sección de Tipos de aplicación, Sword tiene 2 tipos de aplicación: Web y gRPC. Cada tipo tiene su propia configuración.

Configuración [web]

Esta configuración aplica a aplicaciones web y sus extensiones, como socketio.

KeyTipoDefaultDescripción
hostString"0.0.0.0"Host o IP de bind de la aplicación web
portu168000Puerto de la aplicación web
router-prefixOption<String>NonePrefijo global para rutas web
request-timeoutOption<RequestTimeoutConfig>NoneConfiguración de timeout para controladores web
body-limitOption<BodyLimitConfig>10MBConfiguración de límite de tamaño para extracción de body en requests web
Ejemplo en formato TOML
toml
[web]
host = "0.0.0.0"
port = 8000
router-prefix = "/api"
body-limit = "2MB"
request-timeout = { enabled = true, timeout = "30s" }

Configuración [socketio]

En Sword, socketio es una extensión de aplicación web. Por lo tanto, al usarla, debes configurar la aplicación como web, y luego agregar la sección propia para configurar el servidor Socket.IO.

KeyTipoDefaultDescripción
ack-timeoutOption<TimeConfig>5sTiempo máximo para ACK saliente
connect-timeoutOption<TimeConfig>45sLímite para completar la conexión inicial
max-buffer-sizeOption<usize>128Máximo de paquetes en buffer por conexión
max-payloadOption<ByteConfig>100KBTamaño máximo de payload saliente
ping-intervalOption<TimeConfig>25sIntervalo de ping del servidor
ping-timeoutOption<TimeConfig>20sTiempo de espera de pong antes de desconectar
req-pathOption<String>"/socket.io"Ruta HTTP donde se monta Socket.IO
transportsOption<Vec<String>>["polling", "websocket"]Transportes permitidos
parser"common" | "msgpack""common"Parser de payloads
ws-read-buffer-sizeOption<usize>4096Tamaño del buffer de lectura websocket
Ejemplo en formato TOML
toml
[socketio]
ack-timeout = "5s"
connect-timeout = "45s"
max-buffer-size = 128
max-payload = "100KB"
ping-interval = "25s"
ping-timeout = "20s"
req-path = "/socket.io"
transports = ["polling", "websocket"]
parser = "common"
ws-read-buffer-size = 4096

Configuración [grpc]

Esta configuración aplica a aplicaciones gRPC y no se relaciona con aplicaciones web.

KeyTipoDefaultDescripción
hostString"0.0.0.0"Host o IP de bind del servidor gRPC
portu1650051Puerto del servidor gRPC
enable-tonic-reflectionboolfalseHabilita el servicio de reflection de tonic
body-limitOption<GrpcBodyLimitConfig>10MBConfiguración de límite de tamaño para mensajes gRPC entrantes y salientes
Ejemplo en formato TOML
toml
[grpc]
host = "0.0.0.0"
port = 50051
enable-tonic-reflection = true
body-limit = { max-decoding-message-size = "4MB", max-encoding-message-size = "4MB" }