首页 \ 问答 \ Netty 4.0 SPDY文件传输无法正常工作(Netty 4.0 SPDY file transfer not working)

Netty 4.0 SPDY文件传输无法正常工作(Netty 4.0 SPDY file transfer not working)

很长一段时间,当我尝试使用带有netty的SPDY时,我总是遇到同样的麻烦。

我检查了不同的SPDY源来设置我的SPDY服务器。 到目前为止它工作正常,我的浏览器有一个纯html输出。 Chrome还会显示一个spdy会话。

问题

当我将netty 4 SPDYorHTTPHandler示例类放到SPDYorHTTPHandler我总是遇到同样的问题。

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

关于那个的任何想法?

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

在下一行:( raf=RandomAccessFile

ChannelFuture sendFileFuture;
    if (useSendFile) {
        sendFileFuture = ctx.write(new DefaultFileRegion(raf.getChannel(), 0, fileLength), ctx.newProgressivePromise());
    } else {
        sendFileFuture = ctx.write(new ChunkedFile(raf, 0, fileLength, 8192), ctx.newProgressivePromise());
    }

但它永远不会写。 代码基于HttpStaticFileServerHandler示例和netty 4的SPDY示例100%。

我刚刚将createHttpRequestHandlerForHttp output更改为createHttpRequestHandlerForHttp output

这是我使用的桩线:

    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());

如果您需要更多代码,请写,我将扩展Post。

我没有错误,警告或其他。

ChannelProgressiveFutureListener从未调用operationProgressed函数。

Thx渡渡鸟。


For a long time I always run into the same trouble when i try to use SPDY with netty.

I checked different SPDY sources to setup my SPDY server. So far it works fine and I have got a pure html output in my browser. Chrome also shows an spdy session.

Issue

When i put the netty 4 HttpStaticFileServerHandler example class to the SPDYorHTTPHandler I always run into the same problem.

HTML content is sent, but the file content isn't. The handler is sending the response so my client retrieves, but then the files are never transmitted.

Any ideas about that?

ctx.write(response) is writing the response to the client (response is a HttpResponse obj).

In the next line:(raf=RandomAccessFile)

ChannelFuture sendFileFuture;
    if (useSendFile) {
        sendFileFuture = ctx.write(new DefaultFileRegion(raf.getChannel(), 0, fileLength), ctx.newProgressivePromise());
    } else {
        sendFileFuture = ctx.write(new ChunkedFile(raf, 0, fileLength, 8192), ctx.newProgressivePromise());
    }

But it never gets written. The code based 100% on the HttpStaticFileServerHandler example and the SPDY example of netty 4.

I just changed the createHttpRequestHandlerForHttp output from SpdyServerHandler to HttpStaticFileServerHandler.

This is the pileline I use:

    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());

If you need more code for that, just write, I will extend the Post.

I got no errors, warnings or something else.

A ChannelProgressiveFutureListener did never call operationProgressed function.

Thx dodo.


原文:https://stackoverflow.com/questions/24342830
更新时间:2022-09-15 08:09

相关文章

更多

最新问答

更多
  • 如何在Laravel 5.2中使用paginate与关系?(How to use paginate with relationships in Laravel 5.2?)
  • linux的常用命令干什么用的
  • 由于有四个新控制器,Auth刀片是否有任何变化?(Are there any changes in Auth blades due to four new controllers?)
  • 如何交换返回集中的行?(How to swap rows in a return set?)
  • 在ios 7中的UITableView部分周围绘制边界线(draw borderline around UITableView section in ios 7)
  • 使用Boost.Spirit Qi和Lex时的空白队长(Whitespace skipper when using Boost.Spirit Qi and Lex)
  • Java中的不可变类(Immutable class in Java)
  • WordPress发布查询(WordPress post query)
  • 如何在关系数据库中存储与IPv6兼容的地址(How to store IPv6-compatible address in a relational database)
  • 是否可以检查对象值的条件并返回密钥?(Is it possible to check the condition of a value of an object and JUST return the key?)
  • GEP分段错误LLVM C ++ API(GEP segmentation fault LLVM C++ API)
  • 绑定属性设置器未被调用(Bound Property Setter not getting Called)
  • linux ubuntu14.04版没有那个文件或目录
  • 如何使用JSF EL表达式在param中迭代变量(How to iterate over variable in param using JSF EL expression)
  • 是否有可能在WPF中的一个单独的进程中隔离一些控件?(Is it possible to isolate some controls in a separate process in WPF?)
  • 使用Python 2.7的MSI安装的默认安装目录是什么?(What is the default installation directory with an MSI install of Python 2.7?)
  • 寻求多次出现的表达式(Seeking for more than one occurrence of an expression)
  • ckeditor config.protectedSource不适用于editor.insertHtml上的html元素属性(ckeditor config.protectedSource dont work for html element attributes on editor.insertHtml)
  • linux只知道文件名,不知道在哪个目录,怎么找到文件所在目录
  • Actionscript:检查字符串是否包含域或子域(Actionscript: check if string contains domain or subdomain)
  • 将CouchDB与AJAX一起使用是否安全?(Is it safe to use CouchDB with AJAX?)
  • 懒惰地初始化AutoMapper(Lazily initializing AutoMapper)
  • 使用hasclass为多个div与一个按钮问题(using hasclass for multiple divs with one button Problems)
  • Windows Phone 7:检查资源是否存在(Windows Phone 7: Check If Resource Exists)
  • 无法在新线程中从FREContext调用getActivity()?(Can't call getActivity() from FREContext in a new thread?)
  • 在Alpine上升级到postgres96(/ usr / bin / pg_dump:没有这样的文件或目录)(Upgrade to postgres96 on Alpine (/usr/bin/pg_dump: No such file or directory))
  • 如何按部门显示报告(How to display a report by Department wise)
  • Facebook墙贴在需要访问令牌密钥后无法正常工作(Facebook wall post not working after access token key required)
  • Javascript - 如何在不擦除输入的情况下更改标签的innerText(Javascript - how to change innerText of label while not wiping out the input)
  • WooCommerce / WordPress - 不显示具有特定标题的产品(WooCommerce/WordPress - Products with specific titles are not displayed)