Channel 上的操作与 ChannelHandlerContext 上的操作有什么区别
What is the difference between operations on Channel vs operations on ChannelHandlerContext
我刚开始使用 Netty,我有一个关于 Channel
和 ChannelHandlerContext
的问题
从我目前所读到的内容来看,Channel
可以看作是对发生 IO
的底层套接字的抽象,而 ChannelHandlerContext
是一个用于在通道之间传递信息的对象通道管道中的处理程序。
以上是否准确?
因为现在我正在查看一些使用 Netty 的代码库和在线示例,我发现在 Channel
和 ChannelHandlerContext
上似乎都有相同的操作。例如:
ctx.channel().write();
vs
ctx.write();
或
ctx.channel().alloc()
vs
ctx.alloc()
问题是,为什么这些相似的操作都定义在 Channeland also on
ChannelHandlerContext` 上?它们有什么不同吗?在什么条件下应该优先选择另一个?
Channel
.* 从管道尾部开始,而 Channel
.* 从上下文所属的处理程序开始。通常在 ChannelHandler
中你总是想使用 ChannelHandlerContext
而在外面你最想使用 Channel
.
我刚开始使用 Netty,我有一个关于 Channel
和 ChannelHandlerContext
从我目前所读到的内容来看,Channel
可以看作是对发生 IO
的底层套接字的抽象,而 ChannelHandlerContext
是一个用于在通道之间传递信息的对象通道管道中的处理程序。
以上是否准确?
因为现在我正在查看一些使用 Netty 的代码库和在线示例,我发现在 Channel
和 ChannelHandlerContext
上似乎都有相同的操作。例如:
ctx.channel().write();
vs
ctx.write();
或
ctx.channel().alloc()
vs
ctx.alloc()
问题是,为什么这些相似的操作都定义在 Channeland also on
ChannelHandlerContext` 上?它们有什么不同吗?在什么条件下应该优先选择另一个?
Channel
.* 从管道尾部开始,而 Channel
.* 从上下文所属的处理程序开始。通常在 ChannelHandler
中你总是想使用 ChannelHandlerContext
而在外面你最想使用 Channel
.