【发布时间】:2020-06-21 01:01:24
【问题描述】:
当 websocket 已经可用时是否需要 HTTP2 的原因?
Nathan Aw(新加坡)
【问题讨论】:
当 websocket 已经可用时是否需要 HTTP2 的原因?
Nathan Aw(新加坡)
【问题讨论】:
当我们有 WebSockets 时,为什么我们需要 HTTP/2?那么当我们有 TCP 的时候为什么我们需要 WebSockets 呢?甚至IP?协议基本上是可以由独立各方实施的公认标准。
WebSockets 适用于双向通信,但在此之上大多是非结构化的并且是特定于应用程序的。 HTTP(大部分)是对服务器的一系列单向请求(请求资源,接收答案)——尽管 HTTP/2 通过 HTTP/2 推送稍微增强了这一点,并且二进制框架层理论上可以更多地用于适当的两种方式推动。因此,大多数 HTTP 用例并不真正需要 WebSocket 的完整双向特性——它们最擅长的事情。
查看 HTTP,它具有 WebSockets 所没有的各种附加功能。包括定义的方法、标头和压缩。这允许在各种 HTTP 实现之间进行明确的理解,以促进其用例的通信,包括multiplexing、缓存、压缩、重定向、错误处理等功能。如果您必须在 WebSockets 之上重新发明所有这些功能(这是一个非常原始的协议),你最终会得到一个类似 HTTP/2 的协议。
HTTP/2 是否可以使用 WebSockets 作为其底层传输层?可能,但这是不必要的额外抽象级别(IP->TCP->WS->HTTP2->HTTP),更不用说最初通常通过 HTTP 建立 websocket。 HTTP 足够大,可以拥有自己的传输协议,所以事实上他们已经走了另一条路,specified WebSockets over HTTP/2。
最后还要注意的是HTTP/2 does not make Web Sockets obselete也可以。它们是不同的,具有不同的优点和缺点。
【讨论】: