このプロジェクトは、Socket.IO サーバーのオープンソース Java 実装です。 Nettyサーバーフレームワークに基づいています。
Apache License 2.0に基づいてライセンスされています。
JAR は Java 8 と互換性がありますが、モジュール情報を構築するには Java 11 以降が必要です。
依存関係リストに以下を含めます。
< dependency >
< groupId >com.corundumstudio.socketio</ groupId >
< artifactId >netty-socketio</ artifactId >
< version >2.0.12</ version >
</ dependency >
2012 年のお客様のフィードバック:
CentOS、1 CPU、4GB RAM を VM 上で実行: CPU 10%、メモリ 15%
6,000 時間のポーリング セッションまたは 15,000 の WebSocket セッション
1 秒あたり 4000 メッセージ
2014 年のお客様のフィードバック:
「ソリューションのストレス テストを行うために、30,000 の WebSocket クライアントを同時に実行し、平均遅延が 1 秒未満で、1 秒あたり合計約 140,000 メッセージのピークに達することができました。」 (c) Viktor Endersz - Kambi Sports Solutions
マルチプレイヤー オーケストラ: multiplayer-orchestra.com
AVOS クラウド: avoscloud.com
カンビ スポーツ ソリューション: kambi.com
ARSnova: arsnova.eu
機能 - EnableCors 設定を追加しました (@zd925 に感謝)
機能 - http リクエスト デコーダーを定義する機能 (@gurkancakir に感謝)
修正 - タイムアウトトリガー後に ack が返された場合、IllegalStateException がスローされます (@malinGH に感謝)
修正 - クライアントが名前空間に繰り返し接続できないようにします (@bigtian99 に感謝)
修正 - デフォルトで添付ファイルをバイナリとして扱う (@nicsor に感謝)
修正 - 回復可能なハンドシェイク失敗処理 (@berinhardt に感謝)
修正 - HashedWheelTimeoutScheduler はタスクの実行前に selectedFutures を削除する必要があります (@berinhardt に感謝)
修正 - カスタム名前空間が認証データをサポート (@Addi に感謝)
修正 - 添付ファイルのフレーム バッファーの読み取り
修正 - WebSocketServerHandshakeException またはチャネルの失敗時のメモリ リーク (@h3mant-1 に感謝)
機能 - 1 つの HTTP ポーリング本文での複数のメッセージの v3/v4 解析 (@unverbraucht に感謝)
修正 - IllegalReferenceCountException エラー
修正 - 添付ファイルの解析によって発生する可能性のある OOM
Github Actions のサポートは @liangyuanpeng によって作成されました
機能 - Java モジュールのサポート (@unverbraucht に感謝)
機能 - AuthTokenListener の追加 (@unverbraucht に感謝)
機能 - マルチパケットセパレーターのサポート (@unverbraucht に感謝)
改善 - 切断時に複数の脱退イベントの代わりに一括脱退イベントを送信 (@ksahu750 に感謝)
修正 - ACK 応答タイムアウト中の NPE (@BlueSodaWater に感謝)
修正 - readVersion() メソッドのリソース リーク (@JHOANG23 に感謝)
機能 - 認証中にキーと値のペアをソケット ストアに追加できるようになりました (@shutuper のおかげで)
機能 - room varargs パラメータを含む getRoomOperations() メソッド (@shutuper に感謝)
修正 - クライアントがデフォルト以外の名前空間に接続できない (@lyjnew に感謝)
修正 - WebSocketTransport および PollingTransport の NPE (@Hunterk95 に感謝)
JDK 8 は、使用するために必要な最小バージョンです。
修正 - maxFramePayloadLength より大きいメッセージがメモリ リークを引き起こす
機能 - SocketIO 4.x プロトコルのサポート (@HashZhang に感謝)
修正 - すべての Socketio 固有のクラスをバンドルに追加 (@rishabhgup に感謝)
修正 - io.netty.channel.ChannelPipelineException エラー
機能 - SocketIOClient.isWritable() メソッドの追加 (@xuwenqing04 に感謝)
機能 - Namespace.addListeners(Iterable listens) メソッドが追加されました (@damonxue に感謝)
修正 - 切断イベント パケットは MESSAGE のサブタイプである必要があります (@MasterShi に感謝)
修正 - BaseStoreFactory が NPE をスローする
機能 - 一括参加および一括離脱のサポートを追加しました (@ksahu750 に感謝)
修正 - 自動切断 (1.7.22 以降の回帰)
機能 - Socketio v4 プロトコルのピンポン サポート (@HashZhang に感謝)
修正 - トランスポート名は大文字でチェックする必要があります (1.7.20 以降の回帰)
機能 - needClientAuth 設定の追加 (@huws に感謝)
修正 - ペイロード > maxFramePayloadLength の場合は ContinuationWebSocketFrame を使用する必要があります (俞伟搏に感謝)
修正 - イベント リスナーの src クラスと dest Bean が一致しません (@cifaz に感謝)
修正 - 不正なトランスポートパラメータ (@mirus36 に感謝)
機能 - writeBufferWaterMarkLow および writeBufferWaterMarkHigh 設定を追加しました (@xuminwlt に感謝)
機能 -allowHeaders 設定を追加しました (@HuangHuan に感謝)
機能 - getCurrentRoomSize() メソッドを追加しました (@sunxiaoyu3 に感謝)
修正 - 名前空間のバグ (@@johntyty912 に感謝)
修正 - redisson を持つ複数のノードが同じメッセージを受信する (梁嘉祺に感謝)
修正 - クライアントの切断時に複数のノードが LEAVE メッセージを 1 つだけ受信する (@GaryLeung922 に感謝)
機能 - すべてのイベントをキャッチするイベント インターセプターのサポート (@yosiat に感謝)
修正 - 名前空間イベントのブロードキャスト (Volodymyr Masliy に感謝)
機能 - Config オブジェクトに RandomSession 設定を追加 (@yuanxiangz に感謝)
修正 - WebSocketTransport の NPE
修正 - NPE とメモリ リーク (zhaolianwang のおかげで)
修正 - 名前空間の解析 (Redliver のおかげ)
修正 - Redisson 3.9 以降の互換性
修正 - 非スレッドセーフな ACK 処理 (@dawnbreaks に感謝)
修正 - 非アクティブなロングポーリングチャネルによりメモリリークが発生する (@dawnbreaks のおかげで)
修正 - websocket CloseFrame 処理 (@hangsu.cho に感謝)
修正 - WebSocketTransport NPE
修正 - セッション ID は一意ではなくなりました
修正 - ping タイムアウト時に基礎となる接続が閉じない問題を修正
修正 - 「fin_close」問題
機能 - 接続用のローカル ソケット アドレスを追加しました (@SergeyGrigorev に感謝)
機能 - addPingListener
メソッドを追加しました (@lovebing に感謝)
機能 - HashedWheelTimer に ThreadFactory を追加 (@hand515 に感謝)
修正 - SO_LINGER を子チャネル (サーバー チャネルではなく) オプションとして処理するように変更しました (@robymus に感謝)
修正 - バイナリ添付ファイルが使用されている場合の ByteBuf リーク
修正 - Cookie からセッションを復元 (@wuxudong に感謝)
修正 - b64 がブール値の場合の NumberFormatException (@vonway のおかげで)
修正 - ポーリングトランスポートのデータエンコーディング
機能 - 構成を使用して SSL KeyFactoryAlgorithm を変更するオプションを追加しました (@robymus に感謝)
改善 - バイナリ ACK 処理の改善 (Sergey Bushik に感謝)
修正 - すでに成功しているため、Promise を成功としてマークできませんでした (@robymus に感謝)
機能 - SocketIOServer.removeAllListeners
メソッドが追加されました
機能 - excludedClient
パラメーターを追加したBroadcastOperations.sendEvent
メソッド
改善 - Redisson が 2.4.0 に更新されました
修正 - 名前空間オブジェクトのメモリ リーク (@CrazyIvan007 に感謝)
修正 - トランスポートがサポートされていない場合にエラーをスローする
修正 - ポーリング使用時のクライアント切断 - IndexOutOfBoundsException
修正 - netty が 4.1.0.CR3 バージョンに更新されました
修正 - バイナリパケット解析 (Winston Li に感謝)
機能 - 圧縮のサポート
修正 - DotNET クライアント要求の処理
修正 - パケット長形式の解析
修正 - パケット内の「d=」をスキップする
修正 - ポーリング クライアントが散発的に途中で切断される (lpage30 のおかげで)
修正 - サーバーがclose
パケットを送信した場合、接続は永久に開いたままになります
修正 - Redisson 最新バージョンとの互換性
改善 - WebSocketServerHandshaker.allowExtensions
がtrue
なりました。
改善 - SessionID Cookie の実装 (@ryandietrich に感謝)
修正 - clientRooms リーク (@andreaspalm に感謝)
修正 - JSON 解析のエラーには ExceptionListener が使用されない
修正 - 「サイレント チャネル」攻撃
改善 - WebSocket パケットの厳密な順序付けのためにuseStrictOrdering
パラメータを追加しました
改善 - FAIL_ON_EMPTY_BEANS = false
オプションが JSON デコーダーに設定されました
改善 - 独自の JsonSupport impl を使用する場合、jackson lib を追加する必要はありません。
修正 - SocketIO クライアント 1.3.x のサポート
修正 - Charset エンコーディングの処理 (alim-akbashev のおかげで)
改善 - SocketIONamespace.getName()
を追加しました
修正 - WebSocket フレーム集約
修正 - WebSocket バッファの解放
修正 - Unexpected end-of-input in VALUE_STRING
エラー
修正 - オリジンヘッダーを含むリクエストに対して Access-Control-Allow-Credentials が TRUE になる
機能 - Configuration.sslProtocol
パラメータが追加されました
修正 - BinaryEvent ACK 処理
修正 - BinaryEvent 非 b64 エンコード/デコード
修正 - パケットエンコード中のバッファリーク
固定 - パケットエンコーディング
修正 - BinaryEvent エンコード/デコード
修正 - チャレンジされていない接続処理
機能 - origin
設定の追加
機能 - crossDomainPolicy
設定の追加
機能 - SocketIOServer.startAsync
メソッドの追加
機能 - Epoll サポート
改善 - BinaryEvent のサポート
修正 - SocketIOClient 切断処理
修正 - ブロードキャスト コールバック
修正 - NPE の場合、認証中にトランスポートが定義されない
修正 - ポーリングトランスポートの ping タイムアウト
修正 - PacketEncoder でのバッファ リーク
修正 - WebSocket トランスポートを使用した間違った送信メッセージのエンコード
修正 - WebSocket トランスポートの NPE
修正 - ポーリングトランスポートにおける複数のパケットのデコード
修正 - バッファリーク
機能 - Configuration.origin を介してカスタムAccess-Control-Allow-Origin
を設定する機能
修正 - CLI 経由の接続ソケット.io-client
機能 - Socket.IO 1.0 プロトコルのサポート。新しいプロトコルのおかげでデコード/エンコードが高速化されました
ドロップ- SocketIOClient.sendMessage
、 SocketIOClient.sendJsonObject
メソッドおよび対応するリスナー
削除- Flashsocket トランスポートのサポート
削除- プロトコル バージョン 0.7 ... 0.9.16
改善 - 単一パケットのエンコーディングが最適化され、主に WebSocket トランスポートで使用されます。エンコード時間が最大 40% 短縮されました (Viktor Endersz のおかげで)
改善 - ルーム処理の最適化
改善 - ExceptionListener.ExceptionCaught メソッドを追加しました
API の破壊的な変更- Configuration.autoAck が ackMode に置き換えられる
機能 - trustStore 設定の追加
機能 - maxFramePayloadLength 設定の追加
機能 - SocketIONNamespace に getAllClients および getClient メソッドが追加されました
修正 - SocketIOServer.getAllClients が間違ったクライアント量を返す
修正 - メッセージリリースの問題
修正 - 例外リスナー構成の再定義に関する問題
API の重大な変更- DataListener.onData が例外をスローするようになりました
改善 - データパラメータが例外リスナーに追加されました
改善 - ソケット構成をセットアップする機能
改善 - Configuration.autoAck パラメーターを追加しました
修正 - クライアント切断時の AckCallback 処理
修正 - 未承認のハンドシェイク HTTP コードが 401 に変更されました
API の重大な変更- Configuration.heartbeatThreadPoolSize 設定が削除されました
機能 - SpringAnnotationScannerによるアノテーション付き Spring Bean のサポート
機能 - 共通例外リスナー
改善 - ScheduledExecutorService がHashedWheelTimerに置き換えられました
修正 - 間違った名前空間クライアントの切断処理
修正 - onConnect/onDisconnect/isAuthorized メソッドの例外によりサーバーがハングする
API の重大な変更- SocketIOClient.sendEvent メソッドのシグネチャが変更されました
改善 - MultiTypeEventListenerおよびOnEventアノテーションによる複数タイプのイベントのサポート
改善 - MultiTypeAckCallbackによる複数タイプのイベント確認応答のサポート
改善 - SocketIOClient.getHandshakeData メソッドを追加しました
改善 - ジェダイをレディソンに置き換えました
修正済み - JDK 1.6+ との互換性
機能 - 認可サポート
修正 - XHR プーリング トランスポートの回帰
修正 - WebSocket トランスポートのリグレッション
修正 - PacketHandler の名前空間 NPE
修正 - サーバー停止中にエグゼキュータがシャットダウンする
機能 - クライアント ストア (メモリ、Redis、Hazelcast) のサポート
機能 - netty-socketio ノード間での分散ブロードキャスト (Redis、Hazelcast) のサポート
機能 - OSGi サポート (rdevera に感謝)
改善 - XHR プーリングの最適化
改善 - SocketIOClient.getAllRooms メソッドを追加しました
修正 - ページのリロード後のフラッシュ ポリシー「リクエスト リーク」(ntrp のおかげで)
修正 - websocket swf の読み込み (ntrp のおかげで)
修正 - 間違った URL により潜在的な DDoS が発生する
修正 - 直接の使用を避けるために Event.class パッケージの可視性が変更されました
改善 - Jackson モジュール登録の簡素化
修正 - シャットダウン中の NPE
改善 - isEmpty メソッドが名前空間に追加されました
修正 - 間違った ACK タイムアウト コールバック呼び出し
修正 - JSON の bigDecimal シリアル化
修正 - パケット処理例外中の無限ループ
修正 - 「クライアントが見つかりません」の処理
改善 - エンコードバッファ割り当ての最適化。
改善 - エンコード バッファーがメモリにプールされるようになり、GC プレッシャーが軽減されました (netty 4.x 機能)。
修正 - 逆シリアル化中の不明なプロパティに関するエラー。
修正 - ロングポーリングトランスポートにおけるメモリリーク。
改善 - 受信データとともにエラー情報をログに記録します。
最初の安定版リリース。