我正在将我使用JDK直接提供的包创建的“plain NIO”(非阻塞IO)TCP服务器迁移到Netty 4。
我有一些线程向所有客户端发送消息,例如健康检查数据包、聊天消息广播、向单个客户端发送直接聊天消息等,这些线程使用我在某处保留的
在Netty中该如何实现呢?是否明智地将一个ChannelGroup在Netty处理器和需要发送消息的线程之间进行共享?该通道将如下所示:
在所有的线程中,我会简单地执行以下操作:
我有一些线程向所有客户端发送消息,例如健康检查数据包、聊天消息广播、向单个客户端发送直接聊天消息等,这些线程使用我在某处保留的
SocketChannels
集合来进行操作。在Netty中该如何实现呢?是否明智地将一个ChannelGroup在Netty处理器和需要发送消息的线程之间进行共享?该通道将如下所示:
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(...);
那会起作用吗?