我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的适当方法是什么?
答案 0 :(得分:6)
首先,在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
类。方法:
messageReceived(ChannelHandlerContext, I) { ...}
用于Netty 3.X版本。
编辑:添加@trustin(Netty开发人员)评论,
channelRead0
来自4.x的SimpleChannelInboundHandler
,它将在Netty 5中重命名为messageReceived
希望它有所帮助。