Netty4:IdleStateHandler不会在EmbeddedChannel中触发事件

时间:2018-10-17 07:30:41

标签: netty

我想在EmbeddedChannel中测试IdleStateHandler,但是它不起作用。这是我的代码:

public class IdleStateHandlerTest {
    public static void main(String[] args) throws InterruptedException {
        EmbeddedChannel channel = new EmbeddedChannel(new IdleStateHandler(1, 0, 0), new MyInHandler());
        while (true) {
            TimeUnit.SECONDS.sleep(1);
            System.out.println(".");
        }
    }

    private static class MyInHandler extends ChannelInboundHandlerAdapter {
        @Override
        public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
            System.out.println("event: " + evt);
        }
    }
}

我期望的是类似“ event:xxxx”的输出。但是它不会打印此消息。为什么?

1 个答案:

答案 0 :(得分:0)

您将需要定期调用channel.runPendingTasks(),因为EmbeddedChannel只会执行调用线程中的所有内容,因此仅当您明确告诉它时才运行计划的任务。