我在尝试使用Channel实例(从'channelConnected'方法获取)到Timer(org.jboss.netty.util.Timer)时遇到了一些麻烦。因为使用外部变量到'TimerTask'是必要的,它被声明为'final'。
我尝试做的是当客户端连接时,启动一个Timer,当连接处于活动状态时,通过该通道发送一些信息,因为我需要使用常规时间间隔。有没有办法做到这一点?
感谢您的帮助。
public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception {
...
this.timerLocal.newTimeout(new TimerTask() {
public void run(Timeout timeout) throws Exception {
Channel ch = ctx.getChannel();
ch.write("data data data");
}
}, 25, TimeUnit.SECONDS);
...
}
答案 0 :(得分:1)
我真的不明白你的问题究竟是什么,但我认为你正在寻找的东西也可以通过IdleStateHandler和IdleStateAwareUpstreamHandler完成。
只需插入一个IdleStateHandler,它会每隔x秒触发写入空闲事件的空闲事件,然后创建一个自定义的IdleStateAwareUpstreamHandler,它将侦听这些事件并触发Channel.write(...)