Netty websocket服务器不会将控制权传递给处理程序

时间:2014-12-09 21:24:45

标签: java netty

我使用Netty 4.1.0.beta3创建了websocket服务器它基于Netty存储库的示例,但我使用共享执行程序(预定的单线程执行程序):

    EventLoopGroup bossGroup = new NioEventLoopGroup(1);
    EventLoopGroup workerGroup = new NioEventLoopGroup(1, executor);
    ServerBootstrap b = new ServerBootstrap();
    b.group(bossGroup, workerGroup).channel(NioServerSocketChannel.class)
            .handler(new LoggingHandler(LogLevel.INFO))
            .childHandler(new WsServerInitializer(this));
    b.bind(port);

同样WsServerInitializer类似于netty repo:

    public void initChannel(SocketChannel ch) throws Exception {
        ChannelPipeline pipeline = ch.pipeline();
        pipeline.addLast(new HttpServerCodec());
        pipeline.addLast(new HttpObjectAggregator(65536));
        pipeline.addLast(serverHandler);
    }

主要问题是服务器经常(并非总是)保持连接状态。我检查控件是否转到LoggingHandler.channelRead(),然后我的serverHandler被添加到ServerBootstrap.channelRead()中的管道中。但在此之后,channelRegisterd()中的任何channelActive()channelRead()serverHandler都不会被调用。两个网络线程都在运行,NioEventLoop.run()正在处理某些任务。当工作循环组收到自己的线程时,问题消失。我的问题是:我该如何调试它?我只是不知道从哪里开始。有什么建议吗?

0 个答案:

没有答案