什么是Netty DecoderResult以及如何使用它?
我正在学习如何使用Netty(这是一个全新的工具)。我研究了Netty文档中给出的HTTP服务器示例。但是我不明白什么是什么是Netty DecoderResult以及如何使用它?,netty,Netty,我正在学习如何使用Netty(这是一个全新的工具)。我研究了Netty文档中给出的HTTP服务器示例。但是我不明白什么是DecoderResult,以及在示例中如何使用它 到目前为止我学到的: 1.解码器将字节转换为更复杂的对象。在本例中,将字节发送到HttpRequest 2.在最后一个ChannelInboundHandler(所有解码完成后)中,我收到了我的对象(例如HttpRequest)。 3.的channelRead0方法的实现非常清楚:获取对象、向下转换、提取信息、构建响应,并在准
DecoderResult
,以及在示例中如何使用它
到目前为止我学到的:1.解码器将字节转换为更复杂的对象。在本例中,将字节发送到
HttpRequest
2.在最后一个
ChannelInboundHandler
(所有解码完成后)中,我收到了我的对象(例如HttpRequest
)。3.的
channelRead0
方法的实现非常清楚:获取对象、向下转换、提取信息、构建响应,并在准备就绪时编写
我不明白的是,为什么在读取了HttpRequest
对象中的一些内容后,会在处检查解码结果(即appendDecoderResult
)?在触摸msg
之前,我是否应该检查此类故障。更一般地说,当解码失败时会发生什么
为了记录在案,下面是我感到困惑的代码部分:
它实际上是HTTP解码器,这意味着它读取数据并试图将其解码为HTTP请求。在执行此操作时,可能会遇到一些可能导致解码过程失败的问题。无论如何,已经解码的数据都不能少用。所以我想顺序并不重要
@Override
protected void channelRead0(ChannelHandlerContext ctx, Object msg) throws Exception {
if (msg instanceof HttpRequest) {
val request = (HttpRequest) msg;
// read all sort of stuff from request
// and add them to the response buffer;
// This is the line confused me :/
appendDecoderResult(buf, request);
}
}