2012-04-17 121 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'代码后,我相信我应该保留映射到通道组的通道组名称的映射(基于用户名)。即'ConcurrentHashMap '。通过这种方式,我可以在逻辑上将所有连接到特定用户名的通道分组。然后,我可以通过用户名参考每个组,并查找相应的计数。这听起来合理吗? – 2012-04-17 19:43:45

+0

是的,这是绝对合理的。 – 2012-04-17 21:45:22

相关问题