通過使用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。 –