1
ログイン名とクライアントが接続されているホスト名/ポートに基づいて接続数に厳密な制限を設ける必要があります。ホスト名/ポートとユーザー名に基づいてNetty接続を制限する
アプローチに関する考えはありますか?
ログイン名とクライアントが接続されているホスト名/ポートに基づいて接続数に厳密な制限を設ける必要があります。ホスト名/ポートとユーザー名に基づいてNetty接続を制限する
アプローチに関する考えはありますか?
ChannelGroupを使用して接続の追跡を維持できると思います。 channelGroupの内容に基づいて、接続を制限するかどうかを決定します。以下のコード部分を参照してください。 channelGroupに追加されたすべてのチャネルは、閉じられると自動的に削除されます。
class YourHandler extends SimpleChannelHandler {
ChannelGroup channelGroup = new DefaultChannelGroup();
@Override
public void channelOpen(ChannelHandlerContext ctx, ChannelStateEvent e)
{
// make a decision if you want to accept connection
// if not just close it using ctc.getChannel().close()
}
@Override
public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e)
{
channelGroup.add(ctx.getChannel());
}
}
今日、私はChannelGroupコードを研究したので、チャンネルグループにマップされた(ユーザー名に基づいて)チャンネルグループ名の 'Map'を保存しておくべきだと思います。つまり、ConcurrentHashMapです。このようにして、特定のユーザー名のために接続されているすべてのチャンネルを論理的にグループ化できます。その後、ユーザー名で各グループを参照し、それぞれのカウントを見つけることができます。これは合理的だと思いますか? –
はい、これは絶対に妥当です。 –