Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript webRTC在功能上如何工作?_Javascript_Webrtc - Fatal编程技术网

Javascript webRTC在功能上如何工作?

Javascript webRTC在功能上如何工作?,javascript,webrtc,Javascript,Webrtc,webRTC功能的所有工作是否都在webRTC服务器上完成?例如,在中,您只需复制输入文本框和输出文本框的html以及JavaScript,并将其复制到本地计算机,它就可以完美地工作。当仔细检查时,有很多调用来自webRTC库,而本地计算机上没有这些调用。即 window.localPeerConnection = new webkitRTCPeerConnection(servers, {optional: [{RtpDataChannels: true}]}); 起初,我认为要使这些方法发

webRTC功能的所有工作是否都在webRTC服务器上完成?例如,在中,您只需复制输入文本框和输出文本框的html以及JavaScript,并将其复制到本地计算机,它就可以完美地工作。当仔细检查时,有很多调用来自webRTC库,而本地计算机上没有这些调用。即

window.localPeerConnection = new webkitRTCPeerConnection(servers,
{optional: [{RtpDataChannels: true}]});
起初,我认为要使这些方法发挥作用,我必须将webRTC下载到本地机器上,该机器将承载这些页面,然后我可以这样调用它们。但事实似乎并非如此,我已经尝试了大多数示例,它们都在没有webRTC的情况下工作

我已经看过了它的很多特性,但它并没有解释这个特殊的问题。另一个让我感到困惑的方面是,当你去官方网站时,它会一步一步地指导你下载webRTC库,我就是这么做的。但是,如果您不需要他们来创建webRTC应用程序,并且这些工作是在外部服务器上完成的,那么这样做的目的是什么呢


我看到了另一个标题几乎相同的问题,,但在阅读了公认的回答和问题的不同之处后,OP想知道点对点连接是如何工作的,他们向他解释了ICE的工作原理和服务器的转换,我从介绍视频中了解到了这一点,我的问题是,这些turn服务器、ICE等是由谷歌托管,还是我们可以在本地托管。如果它是Google托管的东西,那么它不是比能够在本地托管更不安全吗?

如果您关心turn服务器,那么您可以使用创建自己的turn服务器。我用它来创建我自己的回合服务器,它工作得很好

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

  • RTCDataChannel
这意味着您不必“下载”WebRTC来使用它,如果浏览器支持它,它已经存在了


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

因为WebRTC使用对等网络,如果您在本地网络上这样做,它会工作得很好,因为参与者的身份是已知的,WebRTC知道如何路由信息。但这在互联网上不起作用,因为人们正在使用路由器和防火墙等

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

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