2017-06-21 210 views
0

我想将我的FullHttpRequest对象转换为ByteBuf对象,以避免每次在流水线上写入内容时都使用编码。什么是最好的方式来做到这一点?FullHttpRequest到ByteBuff

+0

你是什么意思“避免每次我在流水线上写东西时使用编码”? –

+0

我发送了很多相同的请求。为了优化代码,我不想在流水线上使用HttpRequestEncode类(它每次调用编码代码),但是一旦创建了ByteBuf并且每次都在该通道上写入ByteBuf对象。 – Laucer

+0

为什么不直接复制'HttpRequestEncoder'中的代码来从HttpRequest生成'ByteBuf'? –

回答

0

Netty使用ByteBuf以极好的性能处理消息编码/解码,在大多数情况下,您不需要多次编码相同请求的开销。如果你真的想这样做,你可以自己启动HttpRequestEncoder和ChannelHandlerContext,然后调用它的编码(ChannelHandlerContext ctx,Object msg,List out)方法(你需要创建一个子类,因为它的编码方法是受保护的),那么编码的ByteBuf将被输出到列表中。

总而言之,这样做有点欺骗,但它可以工作。