我可以在 HashMap 中缓存来自 ChannelHandlerContext 的频道吗?
Can i cache the channel from ChannelHandlerContext in a HashMap?
如果我缓存 Channel [ctx.channel()
] 而不是缓存 ChannelHandlerContext 会有什么不同吗?
下面是实现步骤和问题:
- Netty 服务器处理程序从客户端接收消息
- 因为还有其他运行线程处理用户数据,我们需要把这个请求放到一个队列中,让worker处理
- 我们需要有相同的连接用于服务器和客户端之间的多个消息交换
每当消息准备好从工作线程发送到客户端时,使用缓存在 HashMap 中的通道是一个好习惯
最终 ChannelFuture 状态 = channel.writeAndFlush(Unpooled.copiedBuffer(payload.getBytes()));
而每当工作线程想要关闭与客户端的连接时,如果我们关闭缓存的通道,就足够了吗?
看到这个 。
上面是关于ChannelHandlerContext的使用,我的是关于channel的。使用 ChannelHandlerContext 与 Channel
相比还有什么优势
谢谢大家
是的,您可以缓存 Channel
并在以后使用。如果您需要的只是稍后 writeAndFlush()
来自另一个线程的消息,则只需缓存 Channel
就可以了。
ChannelHandlerContext
当您想动态修改管道、在管道上下触发事件等时很有用。如果不需要这些,您可以只使用 Channel
.
如果我缓存 Channel [ctx.channel()
] 而不是缓存 ChannelHandlerContext 会有什么不同吗?
下面是实现步骤和问题:
- Netty 服务器处理程序从客户端接收消息
- 因为还有其他运行线程处理用户数据,我们需要把这个请求放到一个队列中,让worker处理
- 我们需要有相同的连接用于服务器和客户端之间的多个消息交换
每当消息准备好从工作线程发送到客户端时,使用缓存在 HashMap 中的通道是一个好习惯
最终 ChannelFuture 状态 = channel.writeAndFlush(Unpooled.copiedBuffer(payload.getBytes()));
而每当工作线程想要关闭与客户端的连接时,如果我们关闭缓存的通道,就足够了吗?
看到这个
上面是关于ChannelHandlerContext的使用,我的是关于channel的。使用 ChannelHandlerContext 与 Channel
相比还有什么优势谢谢大家
是的,您可以缓存 Channel
并在以后使用。如果您需要的只是稍后 writeAndFlush()
来自另一个线程的消息,则只需缓存 Channel
就可以了。
ChannelHandlerContext
当您想动态修改管道、在管道上下触发事件等时很有用。如果不需要这些,您可以只使用 Channel
.