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

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

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

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

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

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

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

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