Proxy 如何在代理服务器上实现固定套接字计数->;服务器连接?

Proxy 如何在代理服务器上实现固定套接字计数->;服务器连接?,proxy,netty,Proxy,Netty,我读了netty代理的例子,() 我有两个要求 我想在代理->服务器上使用固定计数连接。 在代理示例中,proxy->server conn.count等于client->proxy conn.count。 可能太多了 当客户端->代理连接结束时,代理->服务器连接必须保持有效 当建立新的客户端->代理连接时,重用代理->服务器连接 如何实现它?第一个要求可以通过使用存储频道来轻松实现。假设接受传入连接的ChannelHandler是一个singleton,则可以使用以下代码 // in

我读了netty代理的例子,() 我有两个要求

  • 我想在代理->服务器上使用固定计数连接。 在代理示例中,proxy->server conn.count等于client->proxy conn.count。 可能太多了

  • 当客户端->代理连接结束时,代理->服务器连接必须保持有效 当建立新的客户端->代理连接时,重用代理->服务器连接


  • 如何实现它?

    第一个要求可以通过使用存储频道来轻松实现。假设接受传入连接的
    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.
        }
    }
    

    我认为您正在考虑将“连接池”作为第二个要求。如果是这样,我认为这不是一个好主意。因为,当一个新的客户端“连接”到您的服务器时,它总是一个新的连接,因为它来自您的网络之外。但是我不确定这一点,有更多知识的人可以回答。

    我认为,您需要的是一个具有连接池的客户端


    HttpComponents和AsyncHttpClient都支持池,您可以看看AsyncHttpClient中的代码,它们也有一个基于netty的实现

    谢谢你的回答。但我说的是TCP代理,不是HTTP。