从依靠文字短信的延迟通信,到潜力无限的实时通信多媒体平台,我们在线通信协作这一领域的成就十分可观。
得益于谷歌及其开源平台WebRTC,我们可以在浏览器内使用HTML和纯JavaScript来开发像Skype、Whatsapp等视频聊天应用。
谷歌提及WebAssembly适配其最近Chrome的WebRTC音频管道以及未来WebRTC NV的建设。Low Level APIs说明了WebAssembly会被用在哪些地方。
这些建设使我们不再需要写那么多代码,允许我们移植代码。此外,整个网络生态系统中的每一个浏览器都可用此功能。
WebRTC二代(NV)塑造未来
WebRTC NV是技术开发人员用的一个总括性术语。供应商和其他服务供应商都会慢慢接受这一WebRTC新版本。该版本包括以下几个要点:
WASM:主流网络浏览器都支持的第二语言。那第一种语言是什么呢?当然是JavaScript;
QUIC:一种流行的拥堵控制机制,它能决定你加载页面时要等多长时间;
AV1:一种免税的视频编解码器,提供高性能的视频流。
在深入探讨WebAssembly在WebRTC中起何种作用之前,我们先来介绍一下WebRTC、WASM以及WASM在WebRTC之外的价值。
WebRTC
虽然我们很多人都因为WebRTC协助开发很拉风的游戏应用,或提高视频会议应用的可用性和性能而对其颇感兴趣,但其实WebRTC也被证明是开发社交应用的绝佳工具。
采用端对端连接的社交应用通信速度极快、延迟极低,不需要用户安装外部插件或其他第三方软件,两端中间没有服务器。
这样的应用是在WebRTC各种相互关联的API和协议共同作用下才能建立起来的。WebRTC的API是根据JavaScript API设计的,主要有3项,分别是:
GetUserMedia,可以访问设备的摄像头和麦克风;
PeerConnection,负责WebRTC中所有的媒体传输活动;
数据通道,处理客户之间的专有数据传输。
减少终端用户摩擦
WebRTC大大增强了网络的通信能力和互动能力。数字化支持服务和网店现在可以通过网站进行沟通和 “拨号 “。这增加了使用服务的机会,同时减少了与终端用户的摩擦。市场上有很多用得到该功能的地方,比如:
作为一个能和朋友语音聊天的地方(提供WebRTC屏幕共享的Talkroom.io);
用于联系导师(Prep Lesson, Kwiizi)、医生(Bridge)或专家(24sessions, ClassOnLive)进行直播连接的地方;
用于实时在线讨论(Solaborate,GearCloudLabs)的地方,或者做视频采访工具(Plumvue);
用于开展商务会议(FACEmeeting、Kenja公司、UberConference)的地方,也可作为SaaS解决方案(Jell);
作为呼叫中心或客服平台,也可以作为SaaS解决方案(RichCall、Client Bee、Aircall等)。
这种摩擦的减少有可能增加WebRTC服务的采用价值。让我们进一步看看大家利用WebRTC的哪些功能来探索网络应用的潜力。
WebAssembly的魅力
你可以把用其他语言编写的代码(如C、C++和Rust)编译成WebAssembly,然后在浏览器中运行它。那这有什么吸引人的呢?
WASM能始终保证其原始速度比JavaScript快很多。这是其一大优点。但最吸引人的地方是WASM在设计时考虑到了网络的沙盒模式,WASM基于一个开放的标准,这就意味着所有的浏览器都必须遵守相同的规则。因此,等待浏览器供应商们以不同的步调升级其标准的现象可能不复出现了。
虽然WebRTC发展还处于早期阶段,WASM已经进入现今市场的应用中,比如:
将整个CLI/游戏/桌面应用程序移植到网络上——AutoCAD就使用WebAssembly把他们30年的代码库移植到网络上了,省去了从头开始重写一切的麻烦;
应用AutoCAD飞速加快前端计算速度——Ebay设计了一个包括C++和Javascript的编译管道,以此开发了一款基于WebAssembly的条形码扫描器,其订单完成率提高了30%;
甚至在浏览器之外也能用到WASM。Cloudflare和Fastly等使用WASM模块的无服务器供应商说,他们自己功能的启动速度比大多数使用其他语言的云供应商速度要快;
在不久的将来,WebAssembly能够直接操作DOM,也会获得对垃圾收集、SIMD指令和线程的支持等等。只要你想,只要我有。
WASM在WebRTC中的作用是什么?
WebRTC正在走向成熟,随之而来的是供应商们也在试图采用WebRTC。
在WebRTC中启用WebAssembly可以使开发者更好地控制媒体处理,推动其功能进步。这对于那些寻求创新和个性化的厂商,或者那些想要将WebRTC推向新的用例和新的市场,但受制于目前的实现并不可行的供应来说,这将是非常好的机会。
如果开发者想要解锁类似功能的话,需要他们更透彻地理解WebRTC。
聪明的的开发者会爱上WebRTC中的的WebAssembly。因为它可以让他们实现以下功能,比如:
做一些他们今天做不到的事情,比如不需要依靠谷歌和其他浏览器供应商去开发;
添加自己的特色功能;
使用WebRTC更好控制浏览器的行为。
公司一直在使用定制的WebRTC实现来解决看似与WebRTC正在做的事非常接近的,但又有所不同的问题。
如果他们有低级别的API访问权限,他们就可以使用WebAssembly在浏览器中运行这些相同的用例,而不必移植、编译和运行自己的独立应用程序。
结论
除去上述这些优点,加上通过浏览器在移动设备和多个操作系统上的可用性,WebRTC和WASM降低了项目开发和测试成本,使其回到了初心。
WebRTC不再是一种可望不可及的科技,现在我们就能拥有它。它使人们获得了应对当前形势所需的工具。随着世界经济重回正轨,它能够帮助我们进行远程工作。
文章地址:https://blog.rtcweb.in/how-webrtc-and-wasm-are-opening-new-opportunities-for-web-apps/
原文作者:Aaditya Mandloi