2013-10-03 23 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。 –

相关问题