Netty4和HTTP块

Netty4和HTTP块,netty,Netty,我很难理解如何在Netty 4中使用块 我试图做的是以某种方式替换一个servlet,保持连接打开,并每秒发送两次数据 因此,我已经查看了servlet返回的头,现在有一个Netty处理程序扩展了ChannelInboundMessageHandlerAdapter 我实际上在我的messageReceived(…)方法中做了类似的事情: HttpResponse response=newdefaulthttpresponse(HttpVersion.HTTP_1_1, HttpResponse

我很难理解如何在Netty 4中使用块

我试图做的是以某种方式替换一个servlet,保持连接打开,并每秒发送两次数据

因此,我已经查看了servlet返回的头,现在有一个Netty处理程序扩展了
ChannelInboundMessageHandlerAdapter

我实际上在我的
messageReceived(…)
方法中做了类似的事情:

HttpResponse response=newdefaulthttpresponse(HttpVersion.HTTP_1_1,
HttpResponseStatus.OK);
//初始化响应
HttpHeaders=response.headers();
headers.set(HttpHeaders.Names.CONTENT_类型,“文本/事件流”);
headers.set(HttpHeaders.Names.CACHE_控件,
“无缓存,无存储,最大使用期限=0,必须重新验证”);
set(HttpHeaders.Names.PRAGMA,HttpHeaders.Values.NO_缓存);
headers.set(HttpHeaders.Names.TRANSFER\u编码,HttpHeaders.Values.CHUNKED);
写(应答);
在上述处理程序代码之前,我在管道中添加了一个
ChunkedWriteHandler

现在,如果我做对了,我现在应该在我的频道中编写
ChunkedInput
s,以便发送数据片段

我创建了一个
ChunkedInput
子类,如下所示:

私有类MyChunk实现ChunkedByteInput{
专用最终通道HandlerContext ctx;
私有最终字符串json;
私有布尔完成=假;
私有HystrixChunk2(ChannelHandlerContext ctx,字符串json){
this.ctx=ctx;
this.json=json;
}
@凌驾
公共布尔读块(ByteBuf缓冲区)引发异常{
buffer.writeBytes(“数据:”.getBytes())
.writeBytes(json.getBytes())
.writeBytes(“\n”.getBytes());
完成=正确;
LOGGER.info(“编写的chunck”);
返回true;
}
@凌驾
公共布尔值isEndOfInput()引发异常{
已完成的返回;
}
@凌驾
public void close()引发异常{
ctx.channel().close();
}
}
基本上,在我的
messageReceived(…)
方法中,我只是编写了该类的一些实例


但是我可能已经发现了一个bug,或者更可能的是我不知道如何在Netty中使用chunk,因为我的套接字输出上没有写入任何内容…

实际上,我遇到的这个问题是因为我发送了一个HTTP OK响应,而不是101-CONTINUE

现在似乎很好用