【问题标题】:Netty IO send Message to ClientNetty IO 向客户端发送消息
【发布时间】:2015-04-07 16:07:24
【问题描述】:

如何使用 Netty 从服务器向客户端发送消息? 我知道你可以这样做

  for (Channel c : channels1) {
    c.writeAndFlush("TEXT \r\n");
  }

但它只能在 ChatServerHandler 类中使用。有没有向客户端发送消息的方法,或者我怎样才能创建一个可以调用的方法,例如

sendMessageToServer("MESSAGE");

void sendMessageToServer(String message) {
final ChannelGroup channels = new DefaultChannelGroup(GlobalEventExecutor.INSTANCE);
      for (Channel c : channels) {
        c.writeAndFlush("TEXT \r\n");
      }
}

?如果我在 ChatServerHandler 中使用

final ChannelGroup channels = new DefaultChannelGroup(GlobalEventExecutor.INSTANCE);

我的频道大小为 0。

【问题讨论】:

    标签: java class methods netty server


    【解决方案1】:

    final ChannelGroup channels = new DefaultChannelGroup(GlobalEventExecutor.INSTANCE);
    这构造了一个新的ChannelGroup,里面什么都没有。

    你应该有一个类扩展SimpleChannelInboundHandler<?>
    channelActive(ChannelHandlerContext chc) 方法在连接某些东西时被调用。只需将Channel 实例添加到您的channels channels.add(chc.channel());
    您可能必须公开您的ChannelGroup,以便可以在任何地方访问它。祝你好运。

    【讨论】:

    • 我已经有了channelAdded方法,我将频道添加到组中,客户端连接后组的大小为1,但我不知道如何使用它来获取频道发消息给。无法从外部访问 ChannelGroup,因为我收到静态错误或类似的错误。
    • 我就是这么说的。您需要公开您的ChannelGroup。尝试将其设为public static,以便您可以直接访问它。 public static ChannelGroup channels = new DefaultChannelGroup(GlobalEventExecutor.INSTANCE);
    猜你喜欢
    • 2017-10-26
    • 1970-01-01
    • 2017-03-08
    • 1970-01-01
    • 2013-05-20
    • 1970-01-01
    • 2019-04-29
    • 1970-01-01
    相关资源
    最近更新 更多