2013-10-03 26 views
0

我讀了netty proxy的例子,(https://github.com/netty/netty/tree/master/example/src/main/java/io/netty/example/proxy) 我有兩個要求。如何在代理服務器連接上實現固定套接字計數?

  1. 我想在代理服務器上使用固定計數連接。 在代理示例上,proxy-> server conn。 count等於client-> proxy conn。計數。 它可能太多了。

  2. 當客戶端 - >代理連接結束時,代理 - >服務器連接必須保持活動狀態 當新的客戶端 - >代理連接建立時,重新使用代理服務器連接。

它如何實現?

回答

0

通過使用DefaultChannelGroup來存儲您的頻道,可以輕鬆實現第一項要求。假設正在接受傳入連接的ChannelHandlersingleton,那麼您可以使用以下代碼。

// 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. 
    } 
} 

我想你在考慮第二個需求的「連接池」。如果是這樣,我認爲這不是一個好主意。因爲當一個新的客戶端連接到你的服務器時,它總是一個新的連接,因爲它來自你的網絡之外。但我不確定這一點,有更多知識的人可以回答。

0

我認爲你需要的是一個帶連接池的客戶端。

HttpComponents和AsyncHttpClient支持池,你可以看看AsyncHttpClient中的代碼,它也有一個基於netty的實現。

+0

感謝您的回答。但我說的是TCP代理,而不是HTTP。 –

相關問題