【问题标题】:how does webRTC functionally work?webRTC 在功能上是如何工作的?
【发布时间】:2014-01-02 23:57:43
【问题描述】:

webRTC 功能的所有工作都是在 webRTC 服务器上完成的吗?例如,在rtc data channel from simpl.info 中,您只需复制输入文本框和输出文本框的 html 以及 JavaScript 并将其复制到本地计算机即可完美运行。当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 托管还是我们可以在本地托管它们。如果它是谷歌托管的东西等,是不是比能够在本地托管更不安全?

【问题讨论】:

    标签: javascript webrtc


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

          猜你喜欢
          • 2012-09-24
          • 2017-07-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-05-21
          • 1970-01-01
          • 2012-06-16
          • 1970-01-01
          相关资源
          最近更新 更多