范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

WebTransport是为替代WebSockets而生?

  大家好,很高兴又见面了,我是" 前端进阶 ",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!
  WebTransport能否替代WebSockets?前言
  WebTransport 是一种新规范,使用 HTTP3 从服务器发送和接收数据的协议框架。 类似于 WebSockets,但支持多流、单向流、无序传输以及可靠/不可靠传输。目前Chrome、Edge、Opera浏览器已经支持WebTransport,火狐、Safari还未支持,具体如下图:
  WebTransport的浏览器支持情况1.WebTransport成为WebSocket 替代方案?
  WebSockets 是一种通过持久的单套接字socket在客户端和服务器之间实现全双工通信的技术,它允许低延迟、实时更新。
  而较新的WebTransport有以下特性:可靠数据传输:发送方会收到数据传输成功或失败的通知,失败的传输通常会重新发送,直到成功为止,然后发送下一个数据包。不可靠传输:没有传输成功的确认,丢失数据包不会被重新传送。 这在注重传输速度、而非传输完整性的场景下可用,比如视频聊天。一个连接创建多个流:WebSockets 为每个连接创建一个流,而 WebTransport 可以在一个连接上创建多个流。 它避免了 WebSockets 所遭受的队头阻塞延迟,并且在创建连接时占用的资源较少。
  WebSockets 以 HTTP/1.1 协议开始,但 WebTransport 可在多种不同的协议之上工作,包括一些 WebSockets 不支持的协议。HTTP/3 :HTTP/3 是万维网使用的传输协议的新版本。 HTTP/3 使用 QUIC 协议进行传输层数据交换,它有几个优点。 QUIC 可以防止队头阻塞延迟,在许多情况下提高网络性能。 这是 WebSockets 的限制。异步&Web Workers&多线程:通过 WebTransport,编码人员还可以使用 promises 和异步函数的 await 关键字等功能,同时API 也在 Web Workers 中运行,支持多线程。
  下面是 WebTransport 工作组文档中的异步函数示例。const url = "https://example.com:4999/wt"; async function initTransport(url) {   // 实例化WebTransport连接   const transport = new WebTransport(url);   // The connection can be used once ready fulfills   await transport.ready; }  async function closeTransport(transport) {     // 关闭连接   try {     await transport.closed;     console.log(`The HTTP/3 connection to ${url} closed gracefully.`);   } catch(error) {     console.error(`The HTTP/3 connection to ${url} closed due to ${error}.`);   } }2.WebTransport使用场景?2.1 加密流媒体
  WebTransport 的流 API 允许您创建连接以发送有序数据。 由于 WebTransport 使用 QUIC 协议,与 TCP 相比,打开和关闭这些连接所需的资源更少。
  您还可以做一些事情,例如更安全地提供流媒体。 WebTransport 有多种安全措施,例如要求使用 Origin 标头以及通过传输参数进行选择性加入。2.2 多人游戏
  WebTransport 适用于 HTTP/2、HTTP/3 和 QUIC 协议。 它可以通过 HTTP 乱序接收数据,并且可以自己请求数据或监听服务器推送的数据。 它可以可靠地和不可靠地做到这一点。
  通过WebTransport的双向流,服务器推送的数据延迟非常低,这对游戏开发来说是一个很大的优势。 它还可以缩短云游戏服务的响应时间。2.3 传感器数据
  许多物联网 (IOT) 设备记录需要传输到服务器的数据,而 WebTransport 的潜在用途是使用低延迟方法来传输这些数据。 物联网设备经常定期发送少量数据, 消耗更少的资源对设备的电池寿命和网络拥塞都有好处。3. WebTransport 特性?
  一起看看 WebTransport 提供了哪些具体特性和功能。 虽然该规范仍处于公开草案阶段,但已完全可用。除了 QUIC 协议之外,还有一个 API 可以让浏览器控制流和数据报。 API 仅支持 HTTPS,以加强安全性。3.1 QUIC
  QUIC 是 Quick UDP Internet Connections 的缩写,谷歌发明的新传输协议。与 TCP 相比,QUIC 可以减少延迟。从表面上看,QUIC 非常类似于在 UDP 上实现的 TCP + TLS + HTTP/2。由于  TCP 是在操作系统内核和中间件固件 中实现的,因此对 TCP 进行重大更改几乎是不可能的。
  但是,由于 QUIC 建立在 UDP 之上,因此没有这种限制。QUIC 可以实现可靠传输,而且相比于 TCP,它的 流控功能在用户空间而不在内核空间 ,那么使用者就不受限于 CUBIC 或是 BBR,而是可以自由选择,甚至根据应用场景自由调整优化。
  QUIC 与现有 TCP + TLS + HTTP/2 方案相比,有以下几点特征: 利用缓存,显著减少连接建立时间 改善拥塞控制,拥塞控制从内核空间到用户空间 没有 head of line 阻塞的多路复用 前向纠错,减少重传 连接平滑迁移,网络状态的变更不会影响连接断线
  Chrome 原生支持 QUIC,并且启用 QUIC 的服务器会一直支持 0-RTT 握手,在 Chrome 中可以通过如下命令打开 QUIC 配置: chrome://flags/ //浏览器直接访问
  WebTransport 也可以在没有 QUIC 的情况下运行在 HTTP/2 或 HTTP/3 之上。 它还可以使用 HTTP/2 作为后备方案,让您可以利用 WebTransport 的优势,而无需考虑网络。3.2 数据报
  WebTransport 主要处理数据报和流。 数据报是一个独立的数据包,可以以任何特定顺序到达。 数据报发送不可靠,如果某些数据丢失,连接也可以应付。 WebTransport 规范允许您使用"maxDatagramSize"属性限制数据报的大小。
  maxDatagramSize的浏览器支持情况
  WebTransport 对象有一个数据报对象,可以通过其可读和可写属性访问该对象。 数据报可以排队,您也可以创建promise等待数据报传输。
  WebTransport 对象还包括状态数据,指示它们是正在连接、已连接、已关闭还是已失败。3.3 Stream
  流允许您发送有序、可靠的数据。 您可以建立流并让服务器将此内容推送到客户端。 它允许低延迟、实时通信。
  在 API 中,WebTransport 对象具有用于表示不同类型流的其他对象的插槽。 其中包括 SendStream、ReceiveStream 和 Bidirectional Stream 对象,目前这些还只存在于草案中。比如下面的Bidirectional Stream:async function setUpBidirectional() {   const stream = await transport.createBidirectionalStream();   // stream is a WebTransportBidirectionalStream   // stream.readable is a ReadableStream   const readable = stream.readable;   // stream.writable is a WritableStream   const writable = stream.writable; }
  使用流,您还可以将接收到的数据通过管道传输到处理程序中,例如 TextDecoderStream,它将数据转换为您的应用程序可以轻松使用的格式。3.4 发送流
  SendStream 对象是一种用于传出数据的 WritableStream。 它们存储流对象,但 SendStream 对象还包含一个promise,它定义了它将采取的操作,例如关闭或中止。SendStream 对象还包含一个插槽,用于将它们附加到 HTTP/3 传输层。// 向服务器发送两个Uint8Array const stream = await transport.createSendStream(); const writer = stream.writable.getWriter(); const data1 = new Uint8Array([65, 66, 67]); const data2 = new Uint8Array([68, 69, 70]); writer.write(data1); writer.write(data2); try {   await writer.close();   console.log("All data has been sent."); } catch (error) {   console.error(`An error occurred: ${error}`); }3.5 接收流
  ReceiveStream 对象是一种处理传入数据的 ReadableStream。ReceiveStream 对象的结构类似于 SendStream 对象,具有流槽和传输槽。 但是,它不包括promise。async function readFrom(receiveStream) {   const reader = receiveStream.readable.getReader();   while (true) {     const {done, value} = await reader.read();     if (done) {       break;     }     // 值为 Uint8Array     console.log(value);   } }  const rs = transport.receiveStreams(); const reader = rs.getReader(); while (true) {   const {done, value} = await reader.read();   if (done) {     break;   }   // 值为 ReceiveStream 的一个实例   await readFrom(value); }3.6 双向流
  双向流将发送流和接收流组合到一个对象中,这使您可以在一个地方管理双向通信。 对象具有可读和可写的属性,对应于上面讨论的 ReceiveStream 和 SendStream 对象。
  这些属性使它们能够处理双向发送的数据。 您读取传入流并写入传出流。3.7 单向流
  您还可以创建单向流。 IncomingUnidirectionalStreams 是由多个 ReceiveStreams 组成的 ReadableStreams。 您可以调用 createUnidirectionalStream() 来创建传出等效项。async function writeData() {   const stream = await transport.createUnidirectionalStream();   const writer = stream.writable.getWriter();   const data1 = new Uint8Array([65, 66, 67]);   const data2 = new Uint8Array([68, 69, 70]);   writer.write(data1);   writer.write(data2);   try {     await writer.close();     console.log("All data has been sent.");   } catch (error) {     console.error(`An error occurred: ${error}`);   } }4.WebTransport 可以取代 WebSockets 吗?
  WebTransport 已经是 WebSockets 的可行替代品,没有线头阻塞、延迟稍低以及多协议方法的多功能性在许多场景中都有好处。
  但是,由于WebTransport技术尚未完全敲定,开发工具较少,并且会持续一段时间。 现在预测 WebTransport 的用途还为时过早,但第一批使用它的团队完全有机会构建一些开创性的东西。
  虽然没有迫切需要切换,但开发人员应该为未来的项目密切关注它,并准备好在最合适的情况下使用它。参考资料
  https://ably.com/blog/can-webtransport-replace-websockets
  https://blog.p2hp.com/archives/10031
  about:blank

伊洛明珠程园来源新乡日报去年5月14日,是入夏以来少有的凉爽天气。是日,天朗气清,惠风和畅,游客往来,不绝如缕漫步在久已盼望的理学圣地程园,有小妹陪伴,十分惬意。谒陵程园位于洛阳市伊川县城西北小雪已至,三清山冬日雪景美图先给您安排上了二十四节气之小雪农历十月十八一场全国性的降温,告诉我们冬日已至,小雪来临。牛年以来,我们已见过三清山的春花夏日秋月,样样美得惊心动魄,美得令人难以忘怀。而唯独冬雪,我们还未见到。今游天下秋意凉!学生族喜欢的秋季绝美露营地原来是这里封面天天见逛姐出街封面新闻记者余子欣拥有了秋天的第一杯奶茶,秋天的第一次露营你安排上了吗?看星空,看日出日落,和三五好友畅谈人生,体验一场治愈生活的露营之旅。拥有秋季快乐的同时,找寻野性的浪漫,在有女人如果不想衰老快或者发胖,生活中这三种食物,尽量还是要少吃对于女人来说什么最重要,估计就是青春了,毕竟一个女人的大好年华,也就那么几年,就像花朵一样,不过有的女人会保养,即使已经老去,但至少从表面是看不出来的,这就是优势的地方,其实女人保为何老年痴呆患者逐渐增多呢?提醒50岁后尽量改掉3个坏习惯生活中患有老年痴呆的人非常多,老年痴呆在医学上叫作阿尔茨海默症,多发于60岁以上的老年人,目前还没有有效的治疗手段,只能延缓病情的发展。很多人觉得老年痴呆是突然发生的,其实在前期的冬吃萝卜夏吃姜,萝卜这样炖太好吃,热乎乎的一锅,美味又营养小雪过后,天气越来越冷了,寒冷的冬季,萝卜白菜成了最时令最常见的蔬菜,俗语常说冬吃萝卜夏吃姜,那么这句话到底有没有科学道理?是不是所有的人都适合吃萝卜?萝卜又该怎么吃呢?冬吃萝卜夏体操皇后刘璇娇嫩如昨,紧跟潮流,粉红套装勾起少女的回忆刘璇运动员出身,凭借自己的努力数次为国争光摘取世界冠军颇受大家喜爱和赞扬。在体育界功成名就后刘璇选择转战娱乐圈,多次参演电影电视剧,展现世界冠军另一面的魅力。娱乐圈向来是百花争艳,看了今年的面包服款式,突然明白保暖和好看是可以兼具的不管平时生活中我们有多爱美,在冬天都不得不屈服于各种厚实的大衣,羽绒服,在这个寒冷的季节,面包服也成为了潮人凹造型的优先选择,穿在身上虽然看上去有些膨胀,可只要你选择合适的款式,瞬购买的好物和大家分享同事送我的BellroyLiteDuffel是白色版,Bellroy网站上还有一个同款的黑色。但我建议,如果你要购买这款包包除非你真的非常非常喜欢黑色一定要购买白色版,因为它太好看保持肌肤光滑紧致,2个简单方法是关键,爱美的人要牢记相信很多女性做梦都想拥有一副光滑紧致的皮肤吧,但并不是每个人都可以称心如意,有些人通过自己的努力确实是保持了一副让人羡慕的好状态,饱满紧致又光滑的,但有些人不但没有做到,还出现了不刘国梁为何特训王曼昱?世乒赛在即,应对伊藤美诚需做两手准备休斯顿世乒赛即将在11月24日开打,这两天国乒全队上下都在训练场馆中进行最后的备战,几位参赛队员都已经做好了准备,静候比赛的到来。本届世乒赛,国乒给予了高度重视,教练组和刘国梁在此
刘涛婚变风波更厉害了!老公取关清空动态,刘涛霸气逆袭变女王最近因为刘涛的婚变传言,让大家开始尤其的关注刘涛和王珂的婚姻感情,而不前刘涛霸气发声维护婚姻,否认了离婚的传言,这也让刘涛的婚变风波备受大家的质疑,但是随后王珂居然取关了刘涛,并且杨幂感情里,不要压抑自己近期,杨幂做客毛血旺综艺节目,谈及感情问题,毛不易表示很多时候不愿意打扰对方,怕对方在忙,又或者虽然很想念,但还是假装不是很爱,怕陷进去,其实,自己是爱的,很多时候也是需要对方在自传闻中的陈芊芊2开始启动,看到女主角后,网友换个人吧传闻中的陈芊芊是赵露思和丁禹兮联合主演的一部古装喜剧,讲述了陈芊芊(赵露思)意外进入了剧本里,在剧本中要和男主角谈恋爱,两个人最后过上了没羞没躁的生活。赵露思也凭借传闻中的陈芊芊中毛晓彤曾被父亲抛弃扔进垃圾桶,成名后父亲向她要5000万赡养费2018年,女星毛晓彤的父亲李超上了一档节目,在节目中,他大声控诉称明星女儿拒绝认自己,也不愿意赡养自己。李超直言女儿工作乃至成名后,没有给过自己一分钱抚养费,也没有给自己买过任何马伊琍大女儿首晒正面照,紫色头发配大红唇,打扮成熟长相遭吐槽今天是520,网友们都纷纷开始向自己爱的人表白。当然,不仅仅是包括恋人,还有亲人朋友等等。这一次,马伊琍的大女儿爱马文君竹也在社交网站上晒出自己的正面照,这可是首次晒出正面照哦,自30年前的经典电影大决战中已经去世的15位演员大决战是中国人民解放军八一电影制片厂拍摄的关于解放战争时期三大战役的系列电影,分为大决战之辽沈战役大决战之淮海战役大决战之平津战役三部六集,大决战之辽沈战役和大决战之淮海战役分别于长津湖伍千里原型曾率部全歼北极熊团,94岁高龄仍硬气前段时间上映的那部电影长津湖,又把我们带回到抗美援朝时期,让我们再一次的感受到了当年英勇的志愿军战士在战场上与美国鬼子激烈交锋的惨烈场面,让我们真真切切的感受到了中国军人的英勇和不你肯定会喜欢,浙江这座小城,物价低美食多,杭州地铁25分钟直达浙江被遗忘的美景,在小角落里,孤芳自赏着,论人文气息,小城是最浓的,巷子里的烟火气,藏也藏不住,美食的香味,在清晨就缭绕在了大街小巷中,热气腾腾的包子,香味四溢的早点,开启了小城美中韩小姐姐穿搭大PK,两者的差异一目了然,你更喜欢哪一套呢?文诺诺中式酷飒小姐姐穿搭!不一定要斩男,但一定要斩女!第一次分享中式连体裤,不知道大家会不会和我一样喜欢!小时候经常偷穿妈妈的连体裤(哈哈哈),因为腰线一般都比较高,可以get大长广东队长520撒狗粮,8张照片尽显甜蜜时刻,球迷直言甜度太高了北京时间5月20日消息,CBA联赛正处于休赛期,各个俱乐部也在忙着进行人员的调配工作。5月20日是一个美好的日子,就在这一天,广东男篮队长周鹏开始撒狗粮了,他在社交平台晒出了8张照勇士不大可能下赛季留所有轮转球员,或交易维金斯勇士跟队记者ConnorLetourneau报道,勇士不大可能下赛季留住所有的轮转球员。Letourneau写道,最符合逻辑的降低薪水支出的方式是在安德鲁维金斯2023年夏天成为完