gearConfiguration du serveur

Exemple minimal

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

Les valeurs par défaut conviennent pour la plupart des cas d'utilisation ; des remplacements supplémentaires sont listés ci‑dessous.

circle-exclamation

Réseau et liaison

Propriété
Type
Par défaut
Description

nom d'hôte

Chaîne

null

Adresse de liaison. Si non définie, se lie à 0.0.0.0 / ::0

port

int

-1

Port du serveur (doit être défini)

contexte

Chaîne

/socket.io

Chemin de contexte Socket.IO

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


Modèle de threads

Propriété
Type
Par défaut
Remarques

bossThreads

int

0

CPU * 2 lorsque la valeur est 0

workerThreads

int

0

CPU * 2 lorsque la valeur est 0

circle-info

Threads Boss vs Worker Les threads boss acceptent les connexions ; les threads worker gèrent tout l'I/O. Ajouter des threads boss seulement pour augmenter le taux d'acceptation des connexions; utiliser 1 pour la plupart des cas. Augmentez les threads worker pour le débit — trop nombreux causent des changements de contexte.


Configuration des transports

Propriété
Type
Par défaut
Description

transports

List<Transport>

WEBSOCKET, POLLING

Transports activés

transportType

TransportType

AUTO

Sélection d'E/S native (EPOLL / KQUEUE / IO_URING / NIO)

upgradeTimeout

int (ms)

10000

Délai d'attente pour la mise à niveau Polling → WebSocket

circle-info

En mode de transport AUTO, socketio4j sélectionne automatiquement le meilleur transport disponible au démarrage dans l'ordre suivant : IO_URING → EPOLL → KQUEUE → NIO.

Si le transport sélectionné n'est pas disponible sur la plateforme actuelle, socketio4j retombe en toute sécurité sur NIO sans échouer au démarrage.


Heartbeat et délais

Propriété
Par défaut
Description

pingInterval

25000 ms

Intervalle de ping

pingTimeout

60000 ms

Délai d'attente du ping (0 désactive)

firstDataTimeout

5000 ms

Prévient les attaques de canaux silencieux

ℹ️ Intervalle de ping vs délai de ping pingInterval définit la fréquence à laquelle le serveur envoie des pings de heartbeat pour maintenir la connexion (keep-alive NAT). pingTimeout définit combien de temps le serveur attend sans un pong avant de considérer le client comme déconnecté.

En bref : intervalle = à quelle fréquence vérifier, timeout = combien de temps attendre avant d'abandonner.

circle-info

Indice sur le délai NAT et le keep-alive pingInterval doit être plus court que les délais d'inactivité NAT typiques (généralement 30–60s) pour maintenir les connexions en vie derrière des routeurs et des réseaux mobiles.

Des valeurs plus basses améliorent la survivabilité NAT et la détection plus rapide des pairs morts, mais augmentent la charge réseau et CPU. Des valeurs plus élevées réduisent la charge, mais risquent des déconnexions silencieuses sur les NAT et les équilibreurs de charge.


Limites de charge utile et de trame

Propriété
Par défaut
Description

maxHttpContentLength

64 Ko

Taille maximale de la requête HTTP

maxFramePayloadLength

64 Ko

Taille maximale de la trame WebSocket


CORS et comportement HTTP

Propriété
Par défaut
Description

enableCors

true

Activer CORS

origin

null

Access-Control-Allow-Origin

allowHeaders

null

Access-Control-Allow-Headers

addVersionHeader

true

Ajoute Server en‑tête

allowCustomRequests

false

Autoriser les requêtes non Socket.IO


Compression

Propriété
Par défaut
Description

httpCompression

true

GZIP / Deflate

websocketCompression

true

permessage-deflate


Gestion du buffer et des ACK

Propriété
Par défaut
Description

preferDirectBuffer

true

Utiliser les buffers directs Netty

ackMode

AUTO_SUCCESS_ONLY

Comportement Auto-ACK

circle-info

Comportement des ACK

  • Les ACK sont envoyés au plus une fois et uniquement si demandé

  • Ack manuel supprime toujours l'auto-ack

  • AUTO → acquitte toujours automatiquement avec [] (même en cas d'exception)

  • AUTO_SUCCESS_ONLY → acquitte automatiquement avec [] uniquement en cas de succès

  • MANUEL → le développeur est entièrement responsable de l'envoi de l'ack


Session et sécurité

Propriété
Par défaut
Description

randomSession

false

Randomiser les IDs de session

needClientAuth

false

Authentification TLS du client


Sérialisation JSON

Propriété
Par défaut
Description

jsonSupport

Détecté automatiquement

Basé sur Jackson par défaut


Autorisation

Propriété
Par défaut
Description

authorizationListener

Autoriser tout

Autorisation de la poignée de main


Gestion des exceptions

Propriété
Par défaut
Description

exceptionListener

DefaultExceptionListener

Hook d'exception global


Stockage / Clustering

circle-info

Veuillez vérifier Adaptateurs Page pour une explication détaillée.


SSL / TLS


Ajustement du décodeur HTTP

Propriété
Par défaut

maxInitialLineLength

Valeur par défaut de Netty

maxHeaderSize

Valeur par défaut de Netty

maxChunkSize

Valeur par défaut de Netty


circle-info

📌 Astuce : La configuration est clonée en interne pour l'immuabilité. Traitez-la comme écrite une fois avant le démarrage du serveur.

Mis à jour

Ce contenu vous a-t-il été utile ?