gearサーバー構成

最小の例

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

ほとんどのユースケースではデフォルトが機能します。追加の上書き設定は以下に記載されています。

circle-exclamation

ネットワークとバインディング

プロパティ
デフォルト
説明

ホスト名

文字列

null

バインドアドレス。未設定の場合はにバインドします 0.0.0.0 / ::0

ポート

int

-1

サーバーポート(必須)

コンテキスト

文字列

/socket.io

Socket.IOのコンテキストパス

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


スレッドモデル

プロパティ
デフォルト
注意事項

bossThreads

int

0

値が0に設定されている場合はCPU * 2

workerThreads

int

0

値が0に設定されている場合はCPU * 2

circle-info

BossとWorkerのスレッド Bossスレッドは接続を受け入れ、WorkerスレッドはすべてのI/Oを処理します。 Bossスレッドを追加 のみ を増やして 接続受け入れレート; 使用する ほとんどの場合は1. スループットのためにWorkerスレッドをスケールしてください—多すぎるとコンテキストスイッチが発生します。


トランスポート設定

プロパティ
デフォルト
説明

transports

List<Transport>

WEBSOCKET, POLLING

有効なトランスポート

transportType

TransportType

AUTO

ネイティブIOの選択(EPOLL / KQUEUE / IO_URING / NIO)

upgradeTimeout

int(ms)

10000

Polling → WebSocket のアップグレードタイムアウト

circle-info

AUTOトランスポートモードでは、 socketio4jは起動時に以下の順序で利用可能な最適なトランスポートを自動的に選択します: IO_URING → EPOLL → KQUEUE → NIO.

選択されたトランスポートが現在のプラットフォームで利用できない場合、socketio4jは NIOに安全にフォールバックします 起動に失敗することなく。


ハートビートとタイムアウト

プロパティ
デフォルト
説明

pingInterval

25000 ms

Ping間隔

pingTimeout

60000 ms

Pingタイムアウト(0 無効化)

firstDataTimeout

5000 ms

サイレントチャネル攻撃を防止します

ℹ️ Ping間隔とPingタイムアウト pingInterval はサーバーが接続を維持するためにどれくらいの頻度でハートビートPingを送るかを定義します(NATキープアライブ)。 pingTimeout はサーバーがどれくらいの期間待つかを定義します Pongなしで クライアントを切断と見なす前の時間。

要するに: interval = チェックする頻度, timeout = 諦めるまでの待機時間.

circle-info

NATタイムアウトとキープアライブのヒント pingInterval典型的なNATアイドルタイムアウトより短く (通常30〜60秒)ルーターやモバイルネットワークの背後で接続を維持するために。

短い値はNATの生存性を改善しデッドピアの検出を速めますが、 ネットワークおよびCPUのオーバーヘッドを増加させます. 長い値はオーバーヘッドを減らしますが、リスクがあります サイレント切断 NATやロードバランサー上で発生する可能性。


ペイロードとフレームの上限

プロパティ
デフォルト
説明

maxHttpContentLength

64 KB

最大HTTPリクエストサイズ

maxFramePayloadLength

64 KB

最大WebSocketフレームサイズ


CORSとHTTPの挙動

プロパティ
デフォルト
説明

enableCors

true

CORSを有効にする

origin

null

Access-Control-Allow-Origin

allowHeaders

null

Access-Control-Allow-Headers

addVersionHeader

true

追加する Server ヘッダー

allowCustomRequests

false

非Socket.IOリクエストを許可する


圧縮

プロパティ
デフォルト
説明

httpCompression

true

GZIP / Deflate

websocketCompression

true

permessage-deflate


バッファとACK処理

プロパティ
デフォルト
説明

preferDirectBuffer

true

Nettyのダイレクトバッファを使用する

ackMode

AUTO_SUCCESS_ONLY

自動ACKの挙動

circle-info

ACKの挙動

  • ACKは送信されます 最大で一度だけ そして 要求された場合にのみ

  • 手動ACK 常に自動ACKを抑制します

  • AUTO → 常にで自動確認する(例外時でも) [] (例外時でも)

  • AUTO_SUCCESS_ONLY → 成功時のみで自動確認する [] のみで

  • MANUAL → 開発者がACK送信の全責任を負います


セッションとセキュリティ

プロパティ
デフォルト
説明

randomSession

false

セッションIDをランダム化する

needClientAuth

false

TLSクライアント認証


JSONシリアライゼーション

プロパティ
デフォルト
説明

jsonSupport

自動検出

デフォルトはJacksonベース


認可

プロパティ
デフォルト
説明

authorizationListener

すべて許可

ハンドシェイク認可


例外処理

プロパティ
デフォルト
説明

exceptionListener

DefaultExceptionListener

グローバル例外フック


ストア / クラスタリング

circle-info

を確認してください アダプター 詳細な説明のページ。


SSL / TLS


HTTPデコーダの調整

プロパティ
デフォルト

maxInitialLineLength

Nettyのデフォルト

maxHeaderSize

Nettyのデフォルト

maxChunkSize

Nettyのデフォルト


circle-info

📌 ヒント: 設定は不変性のため内部でクローンされます。サーバ起動前に一度だけ書き込むものとして扱ってください。

最終更新

役に立ちましたか?