webRTC在功能上如何运作?

时间:2013-12-15 16:09:41

标签: javascript webrtc

webRTC功能的所有工作是否都在webRTC服务器上完成?例如,在rtc data channel from simpl.info中,您只需复制输入文本框和文本框以及JavaScript的html,然后将其复制到本地计算机即可。当JavaScript file接近检查时,有很多来自webRTC库的调用没有在我的本地计算机上。即。

window.localPeerConnection = new webkitRTCPeerConnection(servers,
{optional: [{RtpDataChannels: true}]});

起初我想让这些方法起作用我必须将webRTC下载到将托管页面的本地机器,然后我可以这样调用它们。但情况似乎并非如此,我已经尝试了大多数示例,并且它们都在没有本地webRTC的情况下工作。

我已经看过webRTC intro video它有很多功能,但它并没有解释这个特殊的问题。令我困惑的另一个方面是,当你去官方webrtc.org getting started tutorial时,它会提供下载webRTC库的分步说明,我做了。但是,如果您不需要创建webRTC应用程序并且正在外部服务器上完成工作,那么目的是什么呢?

我看到另一个问题,标题几乎完全相同, how does webRTC work? ,但在阅读了接受的回复并且问题不同之后,OP想知道对等连接是如何工作的他们向他解释了ICE的工作和TURN服务器,我从介绍视频中了解到,我的问题更多的是这些转向服务器,ICE等由Google托管,还是我们可以在本地托管它们。如果谷歌托管其他东西等,是不是没有办法在本地托管?

3 个答案:

答案 0 :(得分:4)

WebRTC是许多组件和协议的非常复杂的协同作用。 幸运的是,从webdeveloper的角度来看,所有这些都由三个主要的JavaScript API封装:getUserMedia,RTCPeerConnection和RTCDataChannel。 这些API由W3C定义,是支持WebRTC的浏览器的一部分。 您可以在此处找到当前支持的概述:

这意味着您无需“下载”WebRTC即可使用它,如果浏览器支持它,它已经存在。

回答关于STUN和TURN服务器的第二个问题:有公共服务器。但是,这些主要用于测试目的。您可以部署自己的TURN服务器,rfc5766-turn-server就是这样,并找到文档here

答案 1 :(得分:3)

由于WebRTC使用点对点,如果您在本地网络上执行它,它将正常工作,因为参与者的身份是已知的,WebRTC知道如何路由信息。但这不适用于互联网,因为人们正在使用路由器和防火墙等......

因此,您必须在开始时交换信令信息以初始化对等连接。这些信息告诉参与者如何通过互联网找到其他人(只是IP是不够的,因为一个公共IP可以在其路由器后面有任意数量的PC)。这称为信令。但信令不是WebRTC的一部分,因此您需要如何交换这些信息。所以基本上你需要一个参与者已经可以“看到”彼此并可以交换信令数据的地方。一旦交换了信息,WebRTC就能够建立直接对等连接,传输所有其他数据,如视频和音频(此数据不会通过服务器传输)。为此,您可以使用您想要的任何技术,websockets,即时消息,甚至从电子邮件中复制信息都可以。

我写了一篇detailed tutorial关于如何创建一个使用websockets的简单WebRTC应用程序。它还解释了如何设置自己的websocket服务器。希望这有帮助!

答案 2 :(得分:1)

如果您担心转弯服务器,则可以使用rfc5766创建自己的转弯服务器。我用它来创建我自己的转弯服务器,它工作正常。