Netty:从管道外部向所有(TCP)客户端发送消息

时间:2013-05-25 00:48:41

标签: java netty

我正在将我的“普通NIO”(=我直接使用JDK中的软件包)TCP服务器迁移到Netty 4。

我有线程向所有客户端发送消息,例如健康检查数据包,聊天消息广播,直接聊天消息到单个客户端,...使用我保留在某处的SocketChannels集合。

我如何在Netty中做到这一点?简单地在一个Netty处理程序和需要发送消息的线程之间共享一个ChannelGroup是明智的吗?频道看起来像这样:

public class ChannelCollectorHandler extends ChannelInboundMessageHandlerAdapter<String> {

    private static final ChannelGroup channels = new DefaultChannelGroup();

    public SecureChatServerHandler(ChannelGroup channels) {
       this.channels = channels;
    }


    @Override
    public void channelActive(final ChannelHandlerContext ctx) throws Exception {
        channels.add(ctx.channel());
    }

    ...
}

在我将要做的所有线程中:

channels.write(...);

那会有用吗?

1 个答案:

答案 0 :(得分:5)

是的,这将毫无问题地发挥作用。 ChannelGroup专为此类任务而设计。