发布网友 发布时间:2024-09-29 18:29
共1个回答
热心网友 时间:2024-11-27 04:43
今天在知乎上被邀请回答一个有趣的问题,我查阅了一些资料,尝试回答这个问题,并与大家分享一个新框架的学习心得。以下是原问题的内容:
要理解这个问题,我们需要了解这两个框架分别是什么。以下是两个框架的官网链接以及描述,包括适用范围和使用注意事项,感兴趣的朋友可以自行查阅。
接下来,我将介绍一些概述内容,以帮助回答你的问题。
Webrtc
WebRTC是一种旨在实现浏览器之间直接通信的协议,它包括一组用于标准化流程的类和方法,自Chrome 23版本起即可使用。WebRTC基于P2P架构,即通话的参与者负责将数据从一端传输到另一端,不依赖于中间服务器。如果一个参与者断开连接,其他参与者将继续广播数据。与传统的通信不同,如果与服务器的连接丢失,数据将不再流式传输。此外,同行在地理上更接近,因此数据传输没有很长的距离。WebRTC建立过程如下:
从上图可以看出,WebRTC建立需要一个信号服务器,信令服务器专用于在2个或多个想要通信的对等方之间建立初始连接。建立连接后,无需将其用于正在进行的通信。信令服务器可以通过多种方式实现,需要的只是对等点A和对等点B之间的桥梁,可以使用从REST到理论上通过电子邮件进行复制粘贴的任何东西,但通常希望将Web套接字用于此类场景,因为可以随时自发发起通信。
libp2p
libp2p是围绕Unix哲学设计的,即创建易于理解和测试的小组件。这些组件也应该能够被交换以适应不同的技术或场景,并且随着时间的推移升级它们也是可行的。尽管不同的对等点可以根据其能力支持不同的协议,但任何对等点都可以充当来自其他对等点的连接的拨号器和/或侦听器,一旦建立的连接可以从两端重用,消除了客户端和服务器之间的区别。该libp2p接口充当多个子系统的薄单板,这些子系统需要对等点才能进行通信。只要这些子系统尊重标准化接口,就可以将这些子系统构建在其他子系统之上。这些子系统适用的主要领域是:
使用libp2p,可以在网络之间保留您的身份,克服网络审查问题,以及通过不同应用程序用于通信的不同传输协议进行通信,其通信的逻辑框架如下:
两者的区别和联系其实*已经有过讨论,以下是相关链接:
WebRTC是一种用于浏览器之间P2P通信的偏向底层的低级别API;而libP2P则是一个由JS,NodeJS,Go,Rust等语言编写的通用库,它实现了基于IPFS的P2P通信。libP2P可以使用包括WebRTC的模块,特别是在浏览器通信时,常常借助WebRTC提供的功能和接口,但也可以不使用。所以libP2P是介于WebRTC之上的框架,同时libP2P比WebRTC使用范围更广泛一些。在github上有一份问答列表,可以帮助大家理解两者。
我是一枚爱跑步的程序猿,很多内容属于自学内容,文中难免会出现一些错误或者不准确的地方,恳请大家批评指正。