1.don't create new client bootstrap in the channelActive, create a client bootstrap at the application level, as same as the server bootstrap; 2.add the SomeOtherHandler to the client bootstrap pipeline; 3.after the client bootstrap connected to the remote server, save the ChannelHandlerContext in somewhere such as a global object; 4.when you want to send something to the remote server, use the ChannelHandlerContext you save in the global object
On Wednesday, May 17, 2017 at 11:16:03 PM UTC+8, [email protected] wrote: > > Looking at Netty in Action and some SO posts, I saw that in order to talk > to another system, you can use Bootstrap() to create a new client and > attach it to the current eventLoop. Looking at the proxy example, it's > done when the initial server is bootstrapped as well. So I tried > > > public void start(final ApplicationContext applicationContext) throws > Exception { > NioEventLoopGroup bossGroup = new NioEventLoopGroup(1); > NioEventLoopGroup workerGroup = new NioEventLoopGroup(); > > try { > bootstrap.group(bossGroup, > workerGroup).channel(NioServerSocketChannel.class) > .handler(new > LoggingHandler(LogLevel.INFO)).childHandler(new > ChannelInitializer<SocketChannel>() { > @Override > protected void initChannel(SocketChannel ch) > throws Exception { > ch.pipeline().addLast(new ServerHandlerImpl()); > ch.pipeline().addLast(new SomeOtherHandler()); > } > > @Override > protected void channelActive(ChannelHandlerContext > ctx) throws Exception { > Bootstrap clientBootstrap = new Bootstrap(); > clientBootstrap.channel(NioSocketChannel.class) > .handler(new > ChannelInitializer<SocketChannel>() { > @Override > protected void > initChannel(SocketChannel ch) throws Exception { > ch.pipeline().addLast(new > CredentialsClientHandler()); > } > }); > > clientBootstrap.group(ctx.channel().eventLoop()); > ChannelFuture future = > clientBootstrap.connect(host, port); > } > }); > > So when a message comes in and it reaches the ServerHandlerImpl, I want it > to then route its message to CredentialsClientHandler that would send a > message to another server, check the credentials, and then resume the rest > of the pipeline. In ServerHandlerImpl, how do I "send a message" down the > other handler and not down SomeOtherHandler? > -- You received this message because you are subscribed to the Google Groups "Netty discussions" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/netty/4434bd76-4f4f-494b-8136-dca2e3ca81a5%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
