gearServerkonfiguration

Minimales Beispiel

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

Standardeinstellungen funktionieren für die meisten Anwendungsfälle; zusätzliche Überschreibungen sind unten aufgeführt.

circle-exclamation

Netzwerk & Bindung

Eigenschaft
Typ
Standard
Beschreibung

hostname

String

null

Bind-Adresse. Wenn nicht gesetzt, bindet an 0.0.0.0 / ::0

port

int

-1

Server-Port (muss gesetzt werden)

context

String

/socket.io

Socket.IO-Kontextpfad

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


Threading-Modell

Eigenschaft
Typ
Standard
Hinweise

bossThreads

int

0

CPU * 2 wenn der Wert auf 0 gesetzt ist

workerThreads

int

0

CPU * 2 wenn der Wert auf 0 gesetzt ist

circle-info

Boss- vs. Worker-Threads Boss-Threads akzeptieren Verbindungen; Worker-Threads übernehmen alle I/O-Aufgaben. Füge Boss-Threads nur hinzu, um die Verbindungsannahmerate; verwende 1 für die meisten Fälle. Skaliere Worker-Threads für Durchsatz—zu viele verursachen Context-Switching.


Transport-Konfiguration

Eigenschaft
Typ
Standard
Beschreibung

transports

List<Transport>

WEBSOCKET, POLLING

Aktivierte Transporte

transportType

TransportType

AUTO

Native IO-Auswahl (EPOLL / KQUEUE / IO_URING / NIO)

upgradeTimeout

int (ms)

10000

Timeout für Upgrade von Polling → WebSocket

circle-info

Im AUTO-Transportmodus wählt socketio4j beim Start automatisch den bestmöglichen verfügbaren Transport in folgender Reihenfolge aus: IO_URING → EPOLL → KQUEUE → NIO.

Wenn der ausgewählte Transport auf der aktuellen Plattform nicht verfügbar ist, fällt socketio4j sicher auf NIO zurück ohne den Start fehlschlagen zu lassen.


Heartbeat & Timeouts

Eigenschaft
Standard
Beschreibung

pingInterval

25000 ms

Ping-Intervall

pingTimeout

60000 ms

Ping-Timeout (0 deaktiviert)

firstDataTimeout

5000 ms

Verhindert stille Kanalangriffe

ℹ️ Ping-Intervall vs. Ping-Timeout pingInterval definiert, wie oft der Server Heartbeat-Pings sendet, um die Verbindung am Leben zu erhalten (NAT-Keep-Alive). pingTimeout definiert, wie lange der Server wartet ohne ein Pong bevor der Client als getrennt betrachtet wird.

Kurz gesagt: interval = wie oft geprüft wird, timeout = wie lange gewartet wird, bevor aufgegeben wird.

circle-info

NAT-Timeout & Keep-Alive-Hinweis pingInterval muss kürzer als typische NAT-Leerlauf-Timeouts sein (normalerweise 30–60s), um Verbindungen hinter Routern und Mobilfunknetzen am Leben zu erhalten.

Niedrigere Werte verbessern die NAT-Überlebensfähigkeit und die schnellere Erkennung toter Peers, aber erhöhen Netzwerk- und CPU-Overhead. Höhere Werte reduzieren den Overhead, bergen jedoch das Risiko von stillen Verbindungen bei NATs und Load Balancern.


Payload- & Frame-Limits

Eigenschaft
Standard
Beschreibung

maxHttpContentLength

64 KB

Maximale HTTP-Anfragegröße

maxFramePayloadLength

64 KB

Maximale WebSocket-Frame-Größe


CORS & HTTP-Verhalten

Eigenschaft
Standard
Beschreibung

enableCors

true

CORS aktivieren

origin

null

Access-Control-Allow-Origin

allowHeaders

null

Access-Control-Allow-Headers

addVersionHeader

true

Fügt hinzu Server Header

allowCustomRequests

false

Erlaube Nicht-Socket.IO-Anfragen


Kompression

Eigenschaft
Standard
Beschreibung

httpCompression

true

GZIP / Deflate

websocketCompression

true

permessage-deflate


Puffer- & ACK-Verarbeitung

Eigenschaft
Standard
Beschreibung

preferDirectBuffer

true

Verwende Netty Direct-Buffers

ackMode

AUTO_SUCCESS_ONLY

Auto-ACK-Verhalten

circle-info

Ack-Verhalten

  • Acks werden gesendet höchstens einmal und nur wenn angefordert

  • Manuelles Ack unterdrückt immer Auto-Ack

  • AUTO → bestätigt immer automatisch mit [] (auch bei Ausnahme)

  • AUTO_SUCCESS_ONLY → bestätigt automatisch mit [] nur bei Erfolg

  • MANUAL → der Entwickler ist voll verantwortlich für das Senden des Acks


Sitzung & Sicherheit

Eigenschaft
Standard
Beschreibung

randomSession

false

Session-IDs randomisieren

needClientAuth

false

TLS-Client-Authentifizierung


JSON-Serialisierung

Eigenschaft
Standard
Beschreibung

jsonSupport

Automatisch erkannt

Standardmäßig Jackson-basiert


Autorisierung

Eigenschaft
Standard
Beschreibung

authorizationListener

Erlaube alle

Handshake-Autorisierung


Fehlerbehandlung

Eigenschaft
Standard
Beschreibung

exceptionListener

DefaultExceptionListener

Globaler Ausnahme-Hook


Speicher / Clustering

circle-info

Bitte prüfen Adapter Seite für detaillierte Erklärung.


SSL / TLS


HTTP-Decoder-Tuning

Eigenschaft
Standard

maxInitialLineLength

Netty-Standard

maxHeaderSize

Netty-Standard

maxChunkSize

Netty-Standard


circle-info

📌 Tipp: Die Konfiguration wird intern zur Unveränderlichkeit geklont. Behandle sie als einmalig beschreibbar vor dem Serverstart.

Zuletzt aktualisiert

War das hilfreich?