【问题标题】:How does downstream events work in jboss's netty?下游事件在 jboss 的 netty 中是如何工作的?
【发布时间】:2011-03-14 10:08:11
【问题描述】:

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

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

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

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

我进一步查看了代码,发现了一个名为 writeRequested 的方法。这有关系吗?谁这么叫?需要吗?

【问题讨论】:

    标签: java nio netty


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-03-11
      • 2017-01-09
      • 2010-09-18
      • 2016-04-10
      • 2017-08-04
      • 1970-01-01
      • 2023-03-06
      • 2020-04-10
      • 2017-06-28
      相关资源
      最近更新 更多