【问题标题】:How to establish peer connection in web app using coturn (stun/turn) server如何使用 coturn (stun/turn) 服务器在 Web 应用程序中建立对等连接
【发布时间】:2016-01-24 22:21:29
【问题描述】:

我正在构建一个用于 cam 广播的网络应用程序。我将 Django 用于 Web 应用程序,并将 coturn 用作(STUN/TURN)信号服务器。我的目标是使用 WebRTC。

我不知道如何将对等点连接到信令服务器以便其他对等点可以访问。所以我需要知道的是如何建立“PeerConnection”。 在 Web 应用程序中,我有我需要的一切(我认为):user.id、共享密钥、信令服务器 IP 和端口,......但我不知道如何将它混合到 HTML JS 脚本中以连接 coturn 服务器。

我已阅读 coturn 服务器文档并搜索了一些示例,但找不到这部分的示例。

谁能给我一个例子?

【问题讨论】:

    标签: javascript webrtc stun peer-connection coturn


    【解决方案1】:

    我觉得你有点糊涂了,coturn不是一个信令服务器,它是一个 TURN/STUN 服务器。

    信令服务器是您在对等点获得直接对等连接之前在对等点之间交换 sdp、ice 候选者和其他数据的东西,coturn 不会这样做。

    我无法解释所有位,但要点是 STUN 用于提供对等点的公共 IP,而 TURN 用于代理点,用于在无法直接访问对等点时传输和接收来自对等点的数据,并且在大多数情况下您只需要一个 STUN 服务器。他们唯一一次参与您的 WebRTC 应用程序是当您创建 PeerConnection 对象时,您在配置对象中传递 STUN/TURN 服务器详细信息,例如:

    let pc = new RTCPeerConnection({
      "iceServers": [
        {"urls": "stun:example.com"},  // STUN Server address
        {"urls": "turn:example.com", "credential": "test", "username": "test"}  // TURN Server address
      ] 
    }); 
    

    【讨论】:

    • 请注意 url 已被 urls 弃用,它可以是同一服务器的 url 字符串或多个 url 字符串的数组。
    • 感谢您为我澄清这一点!因此,据我所知,我不需要使用 coturn,只需要一个像 SignalMaster 这样的信令服务器或任何其他类似的服务器。我错了吗?你能告诉我任何信令服务器吗?
    【解决方案2】:

    据我所知,我不需要使用 coturn,只需要一个像 SignalMaster 这样的信令服务器或任何其他类似的服务器。我错了吗?

    当主机-主机连接不可用时,您仍可能需要 coTurn 或任何其他 STUN/TURN 服务器来实现点对点或中继连接。 ICE 需要 STUN/TURN 才能拥有服务器自反和中继候选者来执行 ICE 并保证连接性。

    WebRTC 用作提供-应答模型,因此您需要某种信令方法(如 SIP/Jingle 或其他信令机制)在两方之间交换 SDP。您可以使用上述 WebRTC 实现的一些第三方解决方案,也可以编写自己的简单信令堆栈。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-30
      • 1970-01-01
      • 1970-01-01
      • 2015-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-19
      相关资源
      最近更新 更多