作者:w3812127 | 来源:互联网 | 2022-12-05 10:59
现在,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客户端中使用它.
如何在浏览器中实现相同的客户端?
1> Barry Pollar..:
你现在不能这样做.通常,HTTP/2在对网页和Web应用程序的使用中应该是透明的,因此不需要实现低级HTTP/2流和连接细节.这是它实现方式之美的一部分 - 浏览器负责所有这些,网页和Web应用程序无需知道是否使用了HTTP/1.1或HTTP/2.
一个可能的例外是HTTP/2推送,并且有一个提议以编程方式公开HTTP/2 Push作为Web超文本应用技术工作组(WHATWG)的一部分:https://github.com/whatwg/fetch/问题/ 51.虽然活动似乎完全放弃了.由于实现Push通知api存在一些复杂性.总而言之,HTTP/2推送很复杂,特别是因为不同的浏览器实现和错误,因此尝试将推送消息公开给Web应用程序将变得复杂.还有许多人认为HTTP/2推送的使用有限,并且大多数用例都有更好的技术,例如资源提示(用于请求HTTP资源)或Web套接字(用于双向通信).Chrome甚至正在尝试完全关闭它.
除了推送之外,优先级划分可能是将低级HTTP/2详细信息暴露给Web应用程序的另一个用例,也许优先级提示最终会提供映射,而不会将其绑定到HTTP/2(因此可以在HTTP/1.1下使用) ,QUIC或未来的任何事情).
所以恕我直言,我认为不需要允许从Web应用程序创建或管理HTTP/2连接,就像没有一种从Javascript创建TCP或UDP连接的简单方法(AFAIK)一样.虽然情况仍然如此,但我认为我们不会看到很多努力来创建这样的实现.甚至你链接到的HTTP/2客户端都是非常基本的,只是发出了一个HTTP请求 - 浏览器已经允许你这样做了(虽然我很欣赏这个节点暴露更多的细节,如果你想要低于这个,而浏览器不会).在大多数情况下,HTTP/2流处理和协议的其他低级细节最好由浏览器本身透明地处理 - 就像现在一样.