2012-04-17 15 views

答えて

4

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()); 
} 

} 
+0

今日、私はChannelGroupコードを研究したので、チャンネルグループにマップされた(ユーザー名に基づいて)チャンネルグループ名の 'Map'を保存しておくべきだと思います。つまり、ConcurrentHashMap です。このようにして、特定のユーザー名のために接続されているすべてのチャンネルを論理的にグループ化できます。その後、ユーザー名で各グループを参照し、それぞれのカウントを見つけることができます。これは合理的だと思いますか? –

+0

はい、これは絶対に妥当です。 –

関連する問題