Hi, 

I am currently working on a little service that listens to a streaming 
service, transforms the messages to some other format, applies some 
business logic and distributes the results among a bunch of connected 
websocket clients. 

So far I created two netty Bootstraps, one that listens to the streaming 
service for incoming messages and one that handles the connected websocket 
clients: 

public class TickSource {

    private static final byte FS = 28;

    public void run() throws Exception {
        String host = "localhost";
        int port = 20077;

        EventLoopGroup workerGroup = new NioEventLoopGroup();

        try {
            Bootstrap b = new Bootstrap();
            b.group(workerGroup);
            b.channel(NioSocketChannel.class);
            b.option(ChannelOption.SO_KEEPALIVE, true);
            b.handler(new ChannelInitializer<SocketChannel>() {
                @Override
                public void initChannel(SocketChannel ch) throws Exception {
                    ch.pipeline().addLast(new DelimiterBasedFrameDecoder(81920, 
Unpooled.wrappedBuffer(new byte[]{FS})));
                    ch.pipeline().addLast(new TickSourceHandler());
                }
            });
            ChannelFuture f = b.connect(host, port).sync();
            f.channel().closeFuture().sync();
        } finally {
            workerGroup.shutdownGracefully();
        }
    }
}

and 

public class TickDistributor {

    public void run() throws Exception {
        EventLoopGroup bossGroup = new NioEventLoopGroup();
        EventLoopGroup workerGroup = new NioEventLoopGroup();
        try {
            final ServerBootstrap sb = new ServerBootstrap();
            sb.group(bossGroup, workerGroup)
                    .channel(NioServerSocketChannel.class)
                    .childHandler(new ChannelInitializer<SocketChannel>() {
                        @Override
                        public void initChannel(final SocketChannel ch) throws 
Exception {
                            ch.pipeline().addLast(
                                    new HttpRequestDecoder(),
                                    new HttpObjectAggregator(65536),
                                    new HttpResponseEncoder(),
                                    new 
WebSocketServerProtocolHandler("/ticks"),
                                    new TickDistributorHandler()
                            );
                        }
                    }
            );
            Channel ch = sb.bind(8080).sync().channel();
            ch.closeFuture().sync();
        } finally {
            bossGroup.shutdownGracefully();
            workerGroup.shutdownGracefully();
        }
    }
}


So each component on its own works nicely. The problem is, I don't have a 
clue how to connect them both in a nice netty-way. I thought about storing 
the the ServerChannels in the TickSourceHandler and write a message 
received from the streaming service to each of them individually, not sure 
though, if this is achievable in that way or if there is a nicer way to do 
it with netty mechanics. 

Reading through *Netty In Action* I also read about LocalChannels and 
bootstrapping new client connections in the same EventLoop if you have a 
1->1 relation, but I guess it's not suitable in my case with a relation of 
1->n? 

I'd be happy about any hint!

Thx, 
u6f6o

-- 
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/4cad9bbf-52b6-4b0f-8705-d57902453c07%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to