Netty 通道读取混乱
Netty channelread confusion
我 3 个月前开始使用 Netty。最初它看起来非常简单和直接使用,因为我按照 4.x 系列主页中给出的示例进行操作。
随着我深入探索,我无法理解某些事件或回调名称。例如,我无法理解以下内容之间的区别:
ChannelRead(ChannelHandleContext ctx, Object msg) { ... }
channelRead0(ChannelHandlerContext ctx, String message) { ... }
messageReceived(ChannelHandlerContext, I) { ...}
看到netty首页的例子都是用channelRead,但是网上有些例子用的是channelRead0。
另请阅读,channelRead0 已重命名为 messageReceived。
如果我正在编写一个简单的服务器程序,我应该使用上面的哪一个?
更让我困惑的是,我还看到来自 JBOss 的 Netty 包,例如
org.jboss.netty.bootstrap.*;
除了
io.netty.bootstrap.ServerBootstrap;
新手入门和理解netty的合适方式是什么?
首先,在 Netty 3.X 中,包来自 org.jboss.netty.*
请参阅:http://netty.io/3.10/api/index.html
但是启动 Netty 4.X 包来自 io.netty.*
见:http://netty.io/4.0/api/index.html
现在,如果您使用 Netty 4.X 读取消息,请使用方法
ChannelRead(ChannelHandleContext ctx, Object msg) { ... }
继承自ChannelInboundHandlerAdapter
class。方法:
messageReceived(ChannelHandlerContext, I) { ...}
用于Netty 3.X版本。
编辑: 添加@trustin(Netty 的创建者)评论,
channelRead0
来自4.x的SimpleChannelInboundHandler
,在Netty 5
中将重命名为messageReceived
希望对您有所帮助。
我 3 个月前开始使用 Netty。最初它看起来非常简单和直接使用,因为我按照 4.x 系列主页中给出的示例进行操作。
随着我深入探索,我无法理解某些事件或回调名称。例如,我无法理解以下内容之间的区别:
ChannelRead(ChannelHandleContext ctx, Object msg) { ... }
channelRead0(ChannelHandlerContext ctx, String message) { ... }
messageReceived(ChannelHandlerContext, I) { ...}
看到netty首页的例子都是用channelRead,但是网上有些例子用的是channelRead0。
另请阅读,channelRead0 已重命名为 messageReceived。 如果我正在编写一个简单的服务器程序,我应该使用上面的哪一个?
更让我困惑的是,我还看到来自 JBOss 的 Netty 包,例如
org.jboss.netty.bootstrap.*;
除了
io.netty.bootstrap.ServerBootstrap;
新手入门和理解netty的合适方式是什么?
首先,在 Netty 3.X 中,包来自 org.jboss.netty.*
请参阅:http://netty.io/3.10/api/index.html
但是启动 Netty 4.X 包来自 io.netty.*
见:http://netty.io/4.0/api/index.html
现在,如果您使用 Netty 4.X 读取消息,请使用方法
ChannelRead(ChannelHandleContext ctx, Object msg) { ... }
继承自ChannelInboundHandlerAdapter
class。方法:
messageReceived(ChannelHandlerContext, I) { ...}
用于Netty 3.X版本。
编辑: 添加@trustin(Netty 的创建者)评论,
channelRead0
来自4.x的SimpleChannelInboundHandler
,在Netty 5
messageReceived
希望对您有所帮助。