2012-01-19 40 views
0

我嘗試使用Channel實例(從'channelConnected'方法獲取)到一個Timer(org.jboss.netty.util.Timer)中有一些麻煩。因爲使用外部變量到'TimerTask'是必要的,它被聲明爲'final'。在定時器中使用通道引用

我試圖做的是,當客戶端連接,啓動一個計時器,而連接活着時通過通道發送一些信息,因爲我需要使用常客間隔的時間。有沒有辦法做到這一點?

感謝您的幫助。

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); 
     ... 
} 

回答

1

我真的不明白究竟你的問題是什麼,但我想你在找什麼,可以通過IdleStateHandler和IdleStateAwareUpstreamHandler也做。

只需插入一個IdleStateHandler將上寫觸發空閒事件空閒事件每x秒,然後創建一個自定義的IdleStateAwareUpstreamHandler將監聽這些事件和火災Channel.write(...)

相關問題