Netty 用户事件

Netty User Events

为了在 Netty(4.0.34) 中处理任何用户生成的事件,我们在 ChannelHandlerContext 上使用 fireUserEventTriggered(event)

在调用管道中下一个处理程序的 fireUserEventTriggered 方法 userEventTriggered(final ChannelHandlerContext ctx, final Object evt) 时,调用其中生成的事件可以随后处理的地方。

然而,在下一个处理程序的 userEventTriggered 方法中,我无法访问存储在上一个处理程序中的 AttributeMap。 netty 是否为用户事件创建了新的上下文?

AttributeMap 是在每个处理程序的基础上定义的。这是一种为给定的处理程序-管道组合存储状态的方法,并且由于可以将一个处理程序添加到多个管道,因此给定的处理程序实例甚至可以关联多个 ChannelHandleContext(如 JavaDoc )

当您访问给定处理程序的 ChannelHandlerContext 实例时,您正在访问此给定管道中 that 处理程序的状态。

要在处理程序之间传输数据,一种方法是为您的用户事件建模,以便它存储您要传输的数据,然后您可以稍后在后续处理程序中检索它。