- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
在我的项目中,我想写同样的 FullHttpResponse
对许多客户来说是为了提高性能。
以前我也写过同样的ByteBuf
对于自定义协议(protocol),并使用了 retain
防止写入后释放buf。
不幸的是 FullHttpResponse
( DefaultFullHttpResponse
) 我的技术似乎不起作用。我第一次写入响应时,客户端正确接收到响应,但下一次写入没有通过。
我做了一个简单的 System.out.println
测试以确保没有任何阻塞并且我的代码已完全执行,我的测试表明是的,没有任何阻塞并且请求似乎确实通过了。
我正在使用 Netty 4.1.0.Final
从 Maven Central 发布。
管道只有一个 HttpServerCodec(256, 512, 512, false, 64)
和我的 SimpleChannelInboundHandler<HttpRequest>
,我发送 FullHttpResponse
来自。
这是我的入站处理程序的简化版本:
class HTTPHandler extends SimpleChannelInboundHandler<HttpRequest> {
private static final FullHttpResponse response =
new DefaultFullHttpResponse(HttpVersion.HTTP_1_1,
HttpResponseStatus.OK,
Unpooled.buffer(8).writeLong(0),
false);
@Override
public void channelRead0(ChannelHandlerContext ctx, HttpRequest msg) {
ctx.writeAndFlush(response.retain(), ctx.voidPromise());
}
}
最佳答案
你需要使用 response.duplicate().retain()
或者如果使用 Netty 4.1.x 你也可以使用 response.retainedDuplicate()
。
这是确保您获得单独的读者/作者索引所必需的。
关于java - Netty:如何重用相同的 `FullHttpResponse` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37625864/
在我的项目中,我想写同样的 FullHttpResponse对许多客户来说是为了提高性能。 以前我也写过同样的ByteBuf对于自定义协议(protocol),并使用了 retain防止写入后释放bu
我是一名优秀的程序员,十分优秀!