我们正在玩WebRTC并试图了解它的好处。
Skype可以为数亿人提供服务的一个原因是,它采用了分散的点对点架构,可以降低服务器成本。
WebRTC是否允许人们构建类似于Skype的视频聊天应用程序,因为体系结构可以分散(即,视频流不是从广播公司通过中央服务器路由到听众,而是直接从广播公司路由到听众)?
或者换句话说,WebRTC是否允许某人基本上复制类似于Skype的P2P架构的好处?
或者你还需要类似Skype的P2P架构吗?
答案 0 :(得分:3)
是的,这基本上就是WebRTC所做的。使用getPeerConnection()API的调用不通过集中式服务器发送语音/视频数据,而是使用ICE,STUN和TURN等防火墙遍历协议来允许直接的点对点连接。但是,初始调用设置仍然需要一个服务器(很可能是运行WebSocket实现的东西,但它可能是你可以弄清楚如何让JavaScript与之交谈的任何东西),这样两个客户端就可以发现它们是在线,发信号通知他们想要连接,然后弄清楚如何操作(这是ICE / STUN / TURN位进入的地方)。
然而,Skype的P2P架构不仅仅是来回传递语音/视频数据。 Skype的大部分IP都不在编解码器或协议中(其中大部分都是从Global IP Solutions获得许可的,两年前谷歌购买然后开源,以及Chrome的WebRTC实施的基础形式)。 Skype真正的IP都在WebRTC中,它依赖于服务器:确定哪些人在线,他们在哪里,以及如何抓住他们,并在中 大规模分散的时尚。 (有关详细信息,请参阅here。)我认为您可以使用getPeerConnection()API的DataStream部分来执行此类操作,如果您真的非常聪明 - 但它会很复杂,很可能会踩到一些Skype专利。除非您想要真正,非常庞大,否则您可能只想运行自己的集中式存在和位置服务器,并通过标准WebSockets处理所有这些内容。
答案 1 :(得分:1)
我应该注意到Skype的网络架构自创建以来发生了变化;它不再(从我听到的)使用随机用户作为超级节点来将数据从客户端1中继到客户端2;它不能很好地扩展,并导致结果的变化猖獗(并且对没有防火墙连接和带宽的人感到烦恼)。
你绝对可以使用WebRTC构建类似SKype的东西 - 等等。 : - )