【问题标题】:Is there a reason why HTTP2 is required when websocket is already available?当 websocket 已经可用时,是否有需要 HTTP2 的原因?
【发布时间】:2020-06-21 01:01:24
【问题描述】:

当 websocket 已经可用时是否需要 HTTP2 的原因?

Nathan Aw(新加坡)

【问题讨论】:

    标签: websocket http2


    【解决方案1】:

    当我们有 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也可以。它们是不同的,具有不同的优点和缺点。

    【讨论】:

    • 请注意,如果客户端和服务器支持 RFC 8441,您​​可以通过 HTTP/2 运行 WebSocket:datatracker.ietf.org/doc/html/rfc8441 – 我认为这将允许消息压缩和多路复用多个 WebSocket连接到单个 TCP/IP 流中,这应该会进一步减少开销。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-26
    • 2016-08-25
    • 2023-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多