File Netty 4.0 SPDY文件传输不工作

File Netty 4.0 SPDY文件传输不工作,file,http,netty,spdy,File,Http,Netty,Spdy,很长一段时间以来,我总是遇到同样的麻烦,当我试图使用斯普迪与内蒂 我检查了不同的SPDY源以设置我的SPDY服务器。到目前为止,它运行良好,我的浏览器中有一个纯html输出。Chrome还显示了一个spdy会话 问题 当我将netty 4HttpStaticFileServerHandler示例类放入SPDYorHTTPHandler时,我总是遇到同样的问题 HTML内容已发送,但文件内容未发送。处理程序正在发送响应,以便我的客户端检索,但随后文件将永远不会传输 有什么想法吗 ctx.write

很长一段时间以来,我总是遇到同样的麻烦,当我试图使用斯普迪与内蒂

我检查了不同的SPDY源以设置我的SPDY服务器。到目前为止,它运行良好,我的浏览器中有一个纯html输出。Chrome还显示了一个spdy会话

问题

当我将netty 4
HttpStaticFileServerHandler
示例类放入
SPDYorHTTPHandler
时,我总是遇到同样的问题

HTML内容已发送,但文件内容未发送。处理程序正在发送响应,以便我的客户端检索,但随后文件将永远不会传输

有什么想法吗

ctx.write(response)
正在将响应写入客户端(响应是
HttpResponse
obj)

在下一行:(
raf=RandomAccessFile

但它永远不会被写下来。代码100%基于
HttpStaticFileServerHandler
示例和netty4的SPDY示例

我刚刚将http输出的
createHttpRequestHandler
SpdyServerHandler
更改为
HttpStaticFileServerHandler

这是我使用的Pilleline:

    ChannelPipeline pipeline = ctx.pipeline();
    pipeline.addLast("spdyFrameCodec", new SpdyFrameCodec(version));
    pipeline.addLast("spdySessionHandler", new SpdySessionHandler(version,true));
    pipeline.addLast("spdyHttpEncoder", new SpdyHttpEncoder(version));
    pipeline.addLast("spdyHttpDecoder", new SpdyHttpDecoder(version, MAX_CONTENT_LENGTH));
    pipeline.addLast("spdyStreamIdHandler", new SpdyHttpResponseStreamIdHandler());
    pipeline.addLast("chunkedWriter", new ChunkedWriteHandler());
    pipeline.addLast("httpRequestHandler",new HttpStaticFileServerHandler());
如果你需要更多的代码,只要写,我会扩展后

我没有收到任何错误、警告或其他东西

ChannelProgressiveFutureListener
从未调用
OperationProgressived
函数

Thx渡渡鸟。

尝试使用:

sendFileFuture = ctx.write(new HttpChunkedInput(new ChunkedFile(raf, 0, fileLength, 8192)), ctx.newProgressivePromise());

Thx很多,这是有效的。但我不明白为什么它会起作用。为什么我需要添加HttpChunkedInput?因为否则ChunkedWriteHandler将生成ByteBuf而不是HttpContent。Spdy处理程序需要HttpContent。
sendFileFuture = ctx.write(new HttpChunkedInput(new ChunkedFile(raf, 0, fileLength, 8192)), ctx.newProgressivePromise());