通过使用DefaultChannelGroup来存储您的频道,可以轻松实现第一项要求。假设正在接受传入连接的ChannelHandler
是singleton
,那么您可以使用以下代码。
// initialize channelgroup in your singleton handler
ChannelGroup ALL_CONNECTIONS = new DefaultChannelGroup(GlobalEventExecutor.INSTANCE);
...
@Override
public synchronized void channelActive(ChannelHandlerContext ctx) throws Exception
{
if(ALL_CONNECTIONS.size() > 100){
ctx.channel().close();// dont accept further connections
}else{
ALL_CONNECTIONS.add(ctx.channel());
// do whatever logic.
}
}
我想你在考虑第二个需求的“连接池”。如果是这样,我认为这不是一个好主意。因为当一个新的客户端连接到你的服务器时,它总是一个新的连接,因为它来自你的网络之外。但我不确定这一点,有更多知识的人可以回答。
来源
2013-10-04 19:14:43
Abe
感谢您的回答。但我说的是TCP代理,而不是HTTP。 –