问题标签 [http-chunked]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1098 浏览

performance - 文件传输的分块编码性能

我注意到分块编码非常适合传输大小未知的网页内容。如果我不得不使用 HTTP 进行文件上传和下载,那么使用 HTTP/1.1 的分块编码功能来提高性能是否有效?或者我应该在应用层实现分块?

编辑:通过性能优势,我暗示通过网络传输数据的性能。分块可以改善上传和下载时间吗?还是我违背了它的意图?

0 投票
1 回答
115 浏览

scala - ack in spray 超时

在 Spray 中,对于分块响应,我们可以发送带有ack 的分块消息

peer ! MessageChunk(buffer).withAck(MyAck(k))

我们可以得到确认消息传递到操作系统网络层的确认消息。我们对这些 acks 有类似超时的东西吗?

0 投票
2 回答
1934 浏览

c - Transfer-Encoding: chunked--浏览器没有响应

我在我的 LINUX 机器上使用 C 语言的 TCP 套接字编程制作了一个非常简单的 Web 服务器。我从本地机器的浏览器(chrome 和 mozilla)向它发送 HTTP GET 请求。这个问题是当我没有在响应中设置标题
Transfer-Encoding: chunked时,浏览器成功显示网页。但是当我保留这个标题时,浏览器没有响应,它说NO DATA IS AVAILABLE

编辑:在我添加@RomanK指出的块大小(446字节)后,它现在适用于firefox。但是铬变得没有反应。

这是代码

这里,add是将第二个参数附加到响应然后附加“/r/n”的函数。

响应是一个字符串。

responseIndex只是一个用于跟踪当前响应长度的 int。

filebuffer是一个字符串,其中包含要发送的 html 文件的所有文本。

回复 :

chrome给出的错误代码是:ERR_INVALID_CHUNKED_ENCODING

0 投票
0 回答
386 浏览

akka - Spray.io 中的分块文件上传?

我有很多客户端会上传任意大的文件(例如,最多 5GB)。出于性能原因,这必须以流式方式完成,客户端可以在并行上传之前将文件拆分为一系列块。然后,服务器将负责从这些块构建文件。我认为这种方法更好地称为分块文件上传

但是,Spray.io 似乎没有提供任何高级构建块来执行分块文件上传。我在这里遗漏了一些明显的东西还是我真的必须从头开始构建这个功能?如果他们不这样做会有点奇怪,因为他们已经提供了一个易于使用的机制来流式响应

0 投票
0 回答
1333 浏览

go - Golang NewChunkedReader 用法

我试图通过将其引入来处理来自第 3 方服务的分块响应httputil.NewChunkedReader

此代码返回零字节,手动调用reader.Read.

我正在寻找一个实施方面的实际例子httputil.NewChunkedReader

0 投票
2 回答
13234 浏览

java - Java HTTP server sending chunked response

I am working on a Java application which has a built in HTTP server, at the moment the server is implemented using ServerSocketChannel, it listens on port 1694 for requests:

A thread is installed to manage requests and responses:

The thread is quite simple:

The main bulk of the code for dealing with the response is in the function processRequest:

I would like to implemented a chunked response, at present chunked responses are not supported by the code above.

[Edit] I've tried to implement a chunked response by adding the method:

The modified processRequest now looks like this:

I've read several specifications for Chunked responses and as far as I can tell I am sending data in the correct format, however I don't receive anything in the browser.

I may have wrongly assume that the browser would correctly piece together the chunks into one, but I could be wrong. The client side handler looks like this:

};

This handler is set-up elsewhere in the object:

0 投票
0 回答
528 浏览

java - 在 Java (HttpUrlConnection) 中使用具有可变块大小的分块编码请求

我现在正在寻找几个星期来找到一个解决方案,如何在 Java 客户端中使用分块传输编码,而无需编写我自己的myHttpURLConnection.

HttpUrlConnectionJava 需要一个固定的块大小,这对我来说不可用。数据由几条大小不同的消息组成,必须及时发送到服务器。当前系统(处于 Prelive/UAT 状态)基于固定1024 byte块工作,但由于大多数消息明显更短,这是对 PROD 中不可接受的带宽的浪费。

此外,大于1024 bytes将被切分的消息,因此 a) 服务器需要再次组装它们,并且 b) 消息的最后一部分将不会被发送,直到有足够的数据可用于填充1024 bytes(更糟糕的是,不再是近时间了)。

有没有人知道如何解决HttpUrlConnectionJava 的限制(不符合RFC2616,因为它没有完全实现它)而不必在上面编写所有代码URLConnection?我没有找到任何可能性来挂钩所需的功能,只需为每个数据堆设置一个新的块大小。

我当前的选择:复制所有HTTPUrlConnection代码并修改处理CHUNKED的部分(例如,使用一些flush()函数来调整块大小并发送那里的内容)。

0 投票
1 回答
2036 浏览

scala - 将 HttpEntity.Chunked 转换为 Array[String]

我有以下问题。我正在向服务器查询一些数据并将其作为 HttpEntity.Chunked 取回。响应字符串看起来像这样,最多有 10.000.000 行,如下所示:

现在我想将传入的数据放入 Array[String] 中,其中每个 String 都是响应中的一行,因为稍后应该将它导入到 apache spark 数据帧中。目前我正在这样做:

我的问题是,将结果放入数组的更好方法是什么?如何直接解组响应实体?因为 .to[Array[String]] 例如不起作用。而且因为有这么多行来,我可以用流来做吗?更有效?

0 投票
0 回答
2255 浏览

curl - 带有分块传输编码的卷曲

我正在使用 curl 获取带有分块传输编码标头的网页。

当我在 linux bash (CentOS) 上执行命令时,我收到进程的 pid 并返回 shell,似乎 curl 在后台执行,在 shell 本身上执行几分钟后,它出现输出 html,我假设由于分块传输编码,它具有这种行为。

如何防止这种卷曲行为?有没有办法强制同步连接等待输出?

0 投票
1 回答
834 浏览

http - HTTP HEAD 方法应该为动态生成的文件获取什么响应头?

http 规范说明了 HEAD 请求:

HEAD 方法与 GET 相同,只是服务器不能在响应中返回消息体。响应 HEAD 请求的 HTTP 标头中包含的元信息应该与响应 GET 请求发送的信息相同。

还有:_

Content-Length entity-header 字段指示发送给接收者的实体主体的大小,以十进制的八进制数表示,或者在 HEAD 方法的情况下,将发送的实体主体的大小具有请求是 GET。

那么如果请求的资源是动态生成的,对于HEAD请求,资源是否也会生成呢?应该有Content-Length标题或Transfer-Encoding: chunked标题吗?

(我觉得这是关于如何实现HTTP协议的。)

加 1

我没有看到规范要求whether to发送 Content-Length 标头或how to将其发送给动态生成的资源。Content-Length这样的动态资源将使用分块传输编码发送,如果使用方法访问,则不会有标头GET。因此,如果 HEAD 响应应该模仿 GET 响应,则也不应发送 Contnet-Length。