下游事件如何在jboss的网络中运行?

时间:2010-07-11 06:43:16

标签: java nio netty

刚开始使用netty来实现我自己的服务器。我花了一段时间来掌握它,但现在我能够通过编写自己的MessageHandler接受客户端,并且在messageReceived中我能够从缓冲区读取并做了一些与收到的数据相关的业务逻辑。

但现在的问题是,如何将数据写入连接的客户端?我看到了示例代码,您可以在这样的新消息中写入通道:

public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) {
    Channel ch = e.getChannel();
    ch.write(e.getMessage());
}

但是如果你不想在那时写回数据怎么办?如果客户端在套接字中保持连接并等待服务器中发生某些事件,该怎么办?在那种情况下,我的服务器将如何找到要写入的正确套接字?我想保留对通道对象的引用吗?这是惯例吗?

我进一步研究了代码并看到了一个名为writeRequested的方法。这有关系吗?谁叫那个?它需要吗?

1 个答案:

答案 0 :(得分:6)

只要你有Channel(或ChannelHandlerContext)的引用,就可以从任何地方,任何线程调用Channel.write()(或Channels.write())。

当您通过调用Channel.write()或调用ChannelHandlerContext.sendDownstream(MessageEvent)来触发writeRequested事件时,将调用writeRequested()。