WebTransport是一种新的规范,提供了WebSockets的替代方案。对于需要低延迟、事件驱动的端点间通信的应用,WebSockets一直是首选,但WebTransport可能会改变这种情况。
WebSockets是一种技术,能够在客户端和服务器之间通过持久的单套接字连接进行双向、全双工通信。这允许低延迟、实时更新,以及创建更丰富的通信和游戏应用。以前,网络依赖于请求和响应,这对这些类型的应用程序来说不够动态。
较新的WebTransport提供安全、多路复用的实时传输,并且已经有了可靠和不可靠地发送数据的API。在可靠的数据传输中,发送者会被通知数据传输的成功或失败,失败的传输通常会被重新发送,直到成功为止,之后再发送下一个数据包。在不可靠的传输中,没有对传输成功的确认,没有收到的数据包根本不会被传递。不可靠的传输通常用于流媒体视频等,在这种情况下,速度是一个问题,而轻微的数据损失,如几帧视频,是可以接受的。因为WebTransport同时使用这两种方法,所以它有很多用例,如多人游戏的双向数据流、互动直播流以及传感器和物联网设备的数据传输:WebTransport在单个连接中发送多个数据流
虽然WebSockets为每个连接创建一个流,但WebTransport允许您在一个连接上创建多个流。它避免了WebSockets所遭受的线头阻塞延迟,并且在创建连接时资源消耗较少。虽然WebSockets是作为HTTP/1.1协议开始的,但WebTransport在几个不同的协议之上工作,包括一些WebSockets不支持的协议。
它与HTTP/3一起工作,这是万维网使用的传输协议的即将到来的版本。HTTP/3使用QUIC协议进行传输层数据交换,这有几个优点。QUIC可以防止线头阻塞延迟,在许多情况下改善网络性能。这也是WebSockets的一个限制。
通过WebTransport,编码人员还可以使用承诺和等待关键字等功能来实现异步函数。该API也可以在Web Workers中运行,实现多线程。
下面是WebTransport工作组文档中的一个异步函数的例子:async function sendData(url, data) {WebTransport工作组仍在敲定规范的细节,因此可能会有更多的特性和功能。在这篇文章中,你将了解WebTransport提供了什么,以及它与WebSockets有什么不同。你还将了解何时以及是否应该进行转换。
const wt = new WebTransport(url);
const writable = await wt.createUnidirectionalStream();
const writer = writable.getWriter();
await writer.write(data);
await writer.close();
}
一些WebTransport用例
WebTransport有许多潜在的用例。让我们来看看它的四个闪光点。
加密的流媒体
WebTransport的流API允许您创建用于发送有序数据的连接。由于WebTransport使用QUIC协议,这些连接在打开和关闭时的资源消耗比TCP少。您还可以做一些事情,如更安全地提供流媒体。WebTransport有若干安全措施,例如要求使用Origin头,以及通过传输参数进行特定选择。
通信
WebTransport可以在同一个连接上发送多种类型的数据。这意味着您可以不可靠地发送和接收视频信息,同时可靠地发送文本或文件数据。
这一功能使您可以在每个连接上做更多的事情,从而在更多的同时进行的用户之间进行更丰富的通信。这意味着你可以在不同的通道上发送不同类型的内容,所以像大型图片可以在不同的连接上发送,而不是其他数据,这意味着图片不能阻止聊天通信。
你还可以创建双向流,允许服务器或客户端启动通信,所以如果你正在实施一个消息传递系统,数据交换可以快速发生。多人游戏玩法
WebTransport与HTTP/2、HTTP/3和QUIC协议一起工作。它可以通过HTTP不按顺序接收数据,并且可以自己请求数据或监听服务器推送的数据。它既能可靠地也能不可靠地做到这一点。有了WebTransport的双向流,服务器推送的数据具有非常低的延迟,这对游戏开发是一个很大的优势。这意味着用户输入和响应之间的延迟更少,这在射击、驾驶或格斗等动作游戏中可能是至关重要的。
它还可以改善云游戏服务的响应时间,服务器处理渲染和游戏,并将视频流传给瘦客户机,后者将用户输入传回服务器。
传感器数据
许多物联网(IOT)设备记录了需要传输到服务器的数据,WebTransport的一个潜在用途是有一个低延迟的方法来传输这些数据。物联网设备经常定期发送少量数据。消耗较少的资源对设备的电池寿命和网络拥堵都有好处。
随着物联网的发展,使用中的大量设备消耗越来越多的连接可能成为一个问题,所以这些设备越轻巧越好。原文链接:https://juejin.cn/post/7121581378671476773
网友回复