gearConfiguración del servidor

Ejemplo mínimo

Configuration config = new Configuration();
config.setHostname("127.0.0.1");
config.setPort(9092);
config.setContext("/socket.io");
config.setTransports(Transport.POLLING, Transport.WEBSOCKET);
config.setStoreFactory(new RedisStoreFactory(redissonClient));
circle-info

Los valores predeterminados funcionan para la mayoría de los casos; las anulaciones adicionales se enumeran a continuación.

circle-exclamation

Red y enlace

Propiedad
Tipo
Predeterminado
Descripción

nombre de host

Cadena

null

Dirección de enlace. Si no se establece, enlaza a 0.0.0.0 / ::0

puerto

int

-1

Puerto del servidor (debe establecerse)

contexto

Cadena

/socket.io

Ruta de contexto de Socket.IO

config.setHostname("0.0.0.0");
config.setPort(9092);
config.setContext("/socket.io");


Modelo de subprocesos

Propiedad
Tipo
Predeterminado
Notas

bossThreads

int

0

CPU * 2 cuando el valor se establece en 0

workerThreads

int

0

CPU * 2 cuando el valor se establece en 0

circle-info

Hilos Boss vs Worker Los hilos boss aceptan conexiones; los hilos worker manejan todo E/S. Agregar hilos boss solo para aumentar la tasa de aceptación de conexiones; use 1 para la mayoría de los casos. Escale los hilos worker para el rendimiento: demasiados provocan cambio de contexto.


Configuración de transporte

Propiedad
Tipo
Predeterminado
Descripción

transports

List<Transport>

WEBSOCKET, POLLING

Transportes habilitados

transportType

TransportType

AUTO

Selección de E/S nativa (EPOLL / KQUEUE / IO_URING / NIO)

upgradeTimeout

int (ms)

10000

Tiempo de espera de actualización Polling → WebSocket

circle-info

En el modo de transporte AUTO, socketio4j selecciona automáticamente el mejor transporte disponible al inicio en el siguiente orden: IO_URING → EPOLL → KQUEUE → NIO.

Si el transporte seleccionado no está disponible en la plataforma actual, socketio4j retrocede de forma segura a NIO sin fallar el inicio.


Latido y tiempos de espera

Propiedad
Predeterminado
Descripción

pingInterval

25000 ms

Intervalo de ping

pingTimeout

60000 ms

Tiempo de espera de ping (0 desactiva)

firstDataTimeout

5000 ms

Evita ataques silenciosos al canal

ℹ️ Intervalo de ping vs tiempo de espera de ping pingInterval define con qué frecuencia el servidor envía pings de latido para mantener la conexión activa (mantener-viva NAT). pingTimeout define cuánto tiempo espera el servidor sin un pong antes de considerar al cliente desconectado.

En resumen: intervalo = con qué frecuencia comprobar, tiempo de espera = cuánto tiempo esperar antes de rendirse.

circle-info

Sugerencia de tiempo de espera NAT y mantener-viva pingInterval debe ser más corto que los tiempos de inactividad típicos de NAT (generalmente 30–60 s) para mantener las conexiones activas detrás de enrutadores y redes móviles.

Valores más bajos mejoran la supervivencia en NAT y la detección más rápida de pares muertos, pero aumentan la sobrecarga de red y CPU. Valores más altos reducen la sobrecarga, pero corren el riesgo de desconexiones silenciosas en NATs y balanceadores de carga.


Límites de carga útil y de trama

Propiedad
Predeterminado
Descripción

maxHttpContentLength

64 KB

Tamaño máximo de solicitud HTTP

maxFramePayloadLength

64 KB

Tamaño máximo de trama WebSocket


CORS y comportamiento HTTP

Propiedad
Predeterminado
Descripción

enableCors

true

Habilitar CORS

origin

null

Access-Control-Allow-Origin

allowHeaders

null

Access-Control-Allow-Headers

addVersionHeader

true

Agrega Server encabezado

allowCustomRequests

false

Permitir solicitudes que no sean de Socket.IO


Compresión

Propiedad
Predeterminado
Descripción

httpCompression

true

GZIP / Deflate

websocketCompression

true

permessage-deflate


Manejo de búfer y ACK

Propiedad
Predeterminado
Descripción

preferDirectBuffer

true

Usar búferes directos de Netty

ackMode

AUTO_SUCCESS_ONLY

Comportamiento de Auto-ACK

circle-info

Comportamiento de ACK

  • Los ACK se envían a lo sumo una vez y solo si se solicita

  • ACK manual siempre suprime el auto-ack

  • AUTO → siempre reconoce automáticamente con [] (incluso en excepción)

  • AUTO_SUCCESS_ONLY → reconoce automáticamente con [] solo en caso de éxito

  • MANUAL → el desarrollador es totalmente responsable de enviar el ack


Sesión y seguridad

Propiedad
Predeterminado
Descripción

randomSession

false

Aleatorizar IDs de sesión

needClientAuth

false

Autenticación TLS del cliente


Serialización JSON

Propiedad
Predeterminado
Descripción

jsonSupport

Detectado automáticamente

Basado en Jackson por defecto


Autorización

Propiedad
Predeterminado
Descripción

authorizationListener

Permitir todo

Autorización del handshake


Manejo de excepciones

Propiedad
Predeterminado
Descripción

exceptionListener

DefaultExceptionListener

Hook global de excepciones


Almacén / Clúster

circle-info

Por favor revise Adaptadores Página para una explicación detallada.


SSL / TLS


Ajuste del decodificador HTTP

Propiedad
Predeterminado

maxInitialLineLength

Predeterminado de Netty

maxHeaderSize

Predeterminado de Netty

maxChunkSize

Predeterminado de Netty


circle-info

📌 Consejo: La configuración se clona internamente para inmutabilidad. Trátela como de escritura única antes de iniciar el servidor.

Última actualización

¿Te fue útil?