javascript - 如何在浏览器中实现HTTP/2流连接?

标签 javascript node.js http2

如今,HTTP/2 的性能不断提升。

最新版本的 Node.js 很好地支持 HTTP/2。

https://nodejs.org/api/http2.html

但我不知道如何在浏览器环境中实现 HTTP/2 客户端。

https://nodejs.org/api/http2.html#http2_client_side_example

上面的链接显示了如何在 Node.js 客户端中使用它。

如何在浏览器中实现相同的客户端?

最佳答案

您目前无法执行此操作。一般来说,HTTP/2 在其对网页和 Web 应用程序的使用中应该是透明的,因此无需实现低级 HTTP/2 流和连接细节。这是它实现方式的一部分美妙之处——浏览器会处理所有这一切,网页和 Web 应用程序无需知道使用的是 HTTP/1.1 还是 HTTP/2。

一个可能的异常(exception)是 HTTP/2 推送,作为 Web 超文本应用程序技术工作组 (WHATWG) 的一部分,有人提议以编程方式公开 HTTP/2 推送:https://github.com/whatwg/fetch/issues/51 .尽管这方面的事件似乎已经完全停止。由于实现推送通知 api 存在一些复杂性。总而言之HTTP/2 push is complicated, especially because of different browser implementations and bugs ,因此尝试将推送消息公开给 Web 应用程序将会很复杂。也有很多人认为 HTTP/2 推送的用途有限,并且对于大多数用例都有更好的技术,例如 resource hints (用于请求 HTTP 资源)或网络套接字(用于双向通信)。 Chrome are even experimenting with switching it off completely .

除了推送之外,优先化可能是将低级 HTTP/2 细节暴露给 Web 应用程序的另一个用例,也许 priority hints最终会为此提供一个映射,而不会将其绑定(bind)到 HTTP/2(因此它可以在 HTTP/1.1、QUIC 或 future 出现的任何内容下使用)。

所以恕我直言,我没有看到迫切需要允许从 Web 应用程序创建或管理 HTTP/2 连接,就像没有创建 TCP 或 UDP 连接的简单方法(AFAIK)一样来自 JavaScript。虽然情况仍然如此,但我认为我们不会看到很多努力来创建这样的实现。甚至您链接到的 HTTP/2 客户端也是非常基本的,只是发出一个 HTTP 请求——浏览器已经允许您这样做(尽管我很欣赏 Node 公开了更多细节,如果您想要比这更低的级别,而浏览器不).在大多数情况下,HTTP/2 流处理和协议(protocol)的其他低级细节可能最好由浏览器本身透明地处理——就像现在一样。

关于javascript - 如何在浏览器中实现HTTP/2流连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52273174/

相关文章:

javascript - Jquery - 识别上下滑动

Node.js express 、路由器和压缩

go - golang http2 服务器推送的高级客户端

android - HTTP/2 来了。原生 Android 应用程序如何利用它?

javascript - 最大化 div 并更改其字体大小

javascript - 使用 KnockoutJS 的项目选择 MVC View

angularjs - Angular2 和 TSD 出现 "Duplicate identifier"错误

javascript - 如何在nodejs中的另一个箭头函数中调用箭头函数

nginx - 如何找出 Nginx 在用作 http/2 负载均衡器时返回 400 的原因?

javascript - 如何在 Nuxt 中使用 Auth0 在后台更新授权 token