我正在将我的“普通 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(...);
那行得通吗?