0

TCPサーバー/クライアントコードをNettyに移植しています。

1つの質問ですが、サーバーは多くのクライアントからの長期間の接続を処理します。私は現在、バッチ操作ですべてのクライアントにブロードキャストするなどのことを行う必要はなく、おそらく必要ないでしょう...しかし、これらのチャネルの保管場所と、通知を選択的に送信できるメカニズムが必要です。いくつかのクライアントIDを与えられたクライアントに。

私の質問は、ChannelGroupがこれらのチャネルを保持するための許容可能なメカニズムですか?最初に接続を取得するときに、チャネルのIDとクライアントIDをルックアップマップに保存します。これにより、特定のクライアントに通知する必要があるときはいつでも、書き込む必要のあるチャネルIDを検索し、ChannelGroupからそのチャネルを取得します。そのチャネルにのみメッセージを送信します。

そのアプローチに何か問題がありますか?

ありがとうございました!

4

1 に答える 1

0

いいえ、それは合理的に思えますが、クライアント ID を使用して Channel を保存し、マッピングを維持するために Channel#getCloseFuture() にリスナーをアタッチすることもできます。ただし、ChannelGroup は、特に「関連付けられた」チャネルを 1 つの単位として閉じる場合に便利です。

于 2012-10-02T22:58:38.920 に答える