netty プロキシ サーバーの例を読んでもらいました。ただし、クライアントを実装してプロキシと通信する方法を知りたいです。私が実装しているソリューションはサーバーであり、クライアントがサーバーに接続するたびにソケットサーバーに接続する必要があります。そのため、サーバーに接続されている各クライアントは、別のサーバーからデータを送受信できます。
サーバー側は netty 上に構築されているため、このようなアーキテクチャを netty で実装するには助けが必要です。
実装したいものは、Nettyプロキシの例でほぼ答えられるようです
以下のコードセグメントは、新しいクライアントチャネルが開かれたときにリモートサーバーに接続する方法を示しています。
@Override
public void channelOpen(ChannelHandlerContext ctx, ChannelStateEvent e)
throws Exception {
// Suspend incoming traffic until connected to the remote host.
final Channel inboundChannel = e.getChannel();
inboundChannel.setReadable(false);
// Start the connection attempt.
ClientBootstrap cb = new ClientBootstrap(cf);
cb.getPipeline().addLast("handler", new OutboundHandler(e.getChannel()));
ChannelFuture f = cb.connect(new InetSocketAddress(remoteHost, remotePort));
outboundChannel = f.getChannel();
f.addListener(new ChannelFutureListener() {
public void operationComplete(ChannelFuture future) throws Exception {
if (future.isSuccess()) {
// Connection attempt succeeded:
// Begin to accept incoming traffic.
inboundChannel.setReadable(true);
} else {
// Close the connection if the connection attempt has failed.
inboundChannel.close();
}
}
});
}
リモートサーバーに接続されると、クライアントが(インバウンドチャネルを介して)送信するものはすべて、リモートサーバー(アウトバウンドチャネル)に転送されます。
まだ行っていない場合は、プロキシの例に従って実装することをお勧めします。