java - Netty IO发送消息给客户端

标签 java class methods netty server

如何使用 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 中的 channel

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

我得到的 channel 大小为 0。

最佳答案

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

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

关于java - Netty IO发送消息给客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28384007/

相关文章:

java - Mockito 的 ExceptionInInitializerError

c++ - C++ 中的被动对象

R:修改应用于 S4 类的任何函数

java - grep 用于特定的 jvm 字节码模式

java - volatile 读取和非 volatile 字段

c++ - 重写类的不同返回值

javascript - 第7章, Eloquent JavaScript : LifelikeWorld

java - 哪个方法被覆盖?

eclipse - 在 Eclipse 中自动生成的 Getter/Setter 之间留出空间

java - spring boot .war tomcat 应用程序日志不存在