如何在curl中使用HTTP / 2的推送功能?

hoo

我一直在研究使用HTTP / 2推送功能的方法,以减少发出的GET请求的数量以及特定客户端-服务器实现中的平均感知延迟。现有的客户端在很大程度上依赖于使用curl来发出GET请求,并且我需要能够重用当前的实现。curl的最新版本依靠底层nghttp2模块提供对HTTP / 2的支持。使用现有的nghttp2服务器:

nghttpd -d /var/www/html/ 3000 local.key local.crt

nghttp和curl均可用于获取示例文本文件的内容:

nghttp https://localhost:3000/text.txt
This is some sample text.

curl https://localhost:3000/text.txt -k --http2
This is some sample text.

但是,使用nghttp2的推送功能时,另一个文本文件将被推送:

nghttpd -d /var/www/html/ -p/text.txt=/text2.txt 3000 local.key local.crt

curl似乎无法处理推送的资源:

nghttp https://localhost:3000/bbb/text.txt
This is some sample text.
This is some sample text as well.

curl https://localhost:3000/text.txt -k --http2 -v
...
* nghttp2_session_mem_recv() returns 268
* before_frame_send() was called
* on_frame_send() was called
* on_stream_close() was called, error_code = 1
* before_frame_send() was called
* on_frame_send() was called
* on_stream_close() was called, error_code = 1
* Connection #0 to host localhost left intact

实际上,在服务器端,两个打开的流收到两次重置:

[id=1] [331.593] recv RST_STREAM frame <length=4, flags=0x00, stream_id=1>
      (error_code=PROTOCOL_ERROR(0x01))
[id=1] [331.594] recv RST_STREAM frame <length=4, flags=0x00, stream_id=2>
      (error_code=PROTOCOL_ERROR(0x01))
[id=1] [331.594] closed

有没有办法将curl与HTTP / 2推送功能一起使用?

丹尼尔·斯坦伯格

curl(命令行工具)尚不支持HTTP / 2推送。

仅当使用libcurl而不是命令行工具进行HTTP / 2时,才可以使用它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

HTTP:Angular 2 + TS如何在HTTP中使用Observables

来自分类Dev

如何在功能组件中使用插件的指令-Vue 2

来自分类Dev

如何在Vue 2渲染功能中使用插槽?

来自分类Dev

如何在AngularJS中使用$ http.jsonp对功能进行单元测试?

来自分类Dev

如何在AngularJS中使用$ http.jsonp对功能进行单元测试?

来自分类Dev

在Firestore中使用Firebase Cloud功能推送通知

来自分类Dev

如何在Jquery中使用功能?

来自分类Dev

如何在gnuplot中使用Floor功能

来自分类Dev

如何在功能中使用地图

来自分类Dev

如何在R中使用子功能

来自分类Dev

如何在功能中使用多重处理?

来自分类Dev

如何在Nano中使用撤消功能?

来自分类Dev

如何在VBA中使用“包含”功能?

来自分类Dev

如何在功能组件中使用PanResponder?

来自分类Dev

如何在Nano中使用撤消功能?

来自分类Dev

如何在Android中使用服务功能

来自分类Dev

如何在SQLite中使用删除功能

来自分类Dev

如何在R中使用子功能

来自分类Dev

如何在Android中使用平均功能?

来自分类Dev

如何在静态功能中使用模板?

来自分类Dev

如何在Jquery中使用功能?

来自分类Dev

如何在正常功能中使用$ location

来自分类Dev

如何在Ubuntu中使用链式功能

来自分类Dev

如何在jQuery中使用显示功能?

来自分类Dev

如何在不同功能中使用队列?

来自分类Dev

如何在yii中使用邮件功能

来自分类Dev

如何在输入功能中使用for循环

来自分类Dev

如何在 Laravel 中使用搜索功能?

来自分类Dev

如何在 Laravel 中使用 update() 功能?