gpt4 book ai didi

websocket - HTTP2 是否适用于视频流或实时多人游戏?

转载 作者:行者123 更新时间:2023-12-05 03:53:53 25 4
gpt4 key购买 nike

尝试思考什么是可能的,以及它与网络套接字的比较。Http2 允许服务器不断地向客户端推送,是否有任何限制阻止它被用来以足够快的速度发送视频数据包以使视频流工作?

最佳答案

HTTP/2 推送旨在推送与主要资源关联的资源。

它主要用于浏览器,在请求 index.html 页面时,它们会被推送 style.cssapplication.jsindex.html 引用。

从技术上讲,可以通过对客户端请求的单个响应(批量下载)将视频流式传输到客户端。

对于更高级的功能,例如稍微提前缓冲和仅在视频流消耗时下载,HTTP 客户端可以制作 range requests .

对于不同分辨率(720p 与 1080p)的并行流的下载,客户端可以发出两个不同的请求。

HTTP/2 需要配置,以便客户端有一个大的流量控制窗口(参见 this answer ),但对于浏览器来说已经是这样了,而且大多数 HTTP/2 客户端库都支持这种配置。

所以它在技术上是可行的,但它与 WebSocket 相比如何?

WebSocket 完全没有元数据的概念,因此应用程序编写者必须为请求和响应发明一些元数据格式,例如视频流 ID/标题、分辨率、范围等,然后下载原始视频。

HTTP/2 帧开销为 9 字节,WebSocket 帧开销为 10 字节(假设帧较大)。然而,HTTP/2 的最大帧大小为 16 KiB,对于 WebSocket 可能更大,尽管可能不建议太大(因为客户端可能决定不为服务器发送的超大帧分配资源)。

此外,在 WebSocket 中,有一个最大消息大小 的概念。您通常不能只发送属于同一消息的 WebSocket 帧,因此您需要将视频拆分为多个更小的消息,消息(但这只是技术问题)。

最后,HTTP/2 可以在 HTTP/2 流 ( RFC8441 ) 中承载 WebSocket 通信。

这意味着 HTTP/2 请求/响应可以完美地模拟 WebSocket 通信:您将有一个“无限”请求 - 请求内容永不结束(直到通信关闭) - 用于客户端到服务器的通信,和一个“无限”响应 - 响应内容永不结束(直到通信关闭) - 用于服务器到客户端的通信。

总而言之,我不会使用 HTTP/2 push 来传输视频:普通的 HTTP/2 响应可以更有效地完成这项工作(就像 WebSocket 那样)。

我发现 WebSocket 对于从服务器到客户端的未经请求通信非常有用。使用 HTTP/2,客户端必须始终发起请求。

关于websocket - HTTP2 是否适用于视频流或实时多人游戏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61438150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com