2012-04-17 1 views

ответ

4

Я думаю, вы можете использовать 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 '. Таким образом, я могу логически группировать все Каналы, которые связаны для определенных имен пользователей. Затем я могу обратиться к каждой группе по имени пользователя и найти соответствующие подсчеты. Звучит ли это разумно? –

+0

Да, это абсолютно разумно. –