如何为 webRTC 提供 STUN 服务器

Nul*_*lad 3 javascript webrtc

我制作了一个非常基本的基于 WebRTC 的视频会议应用程序,从我自己的本地网络访问时它效果很好。现在下一步是为它提供 STUN/TURN 服务器,以便它可以公开使用。

有很多关于如何为本地电话会议设置 WebRTC 的教程,但几乎没有关于使用 STUN/TURN 服务器的教程。

const iceConfiguration = {}
iceConfiguration.iceServers = [
  {
    urls: 'stun:stun1.l.google.com:19302'
  },
  {
    urls: 'stun:stun3.l.google.com:19302'
  },
  {
    urls: 'stun:stun4.l.google.com:19302'
  }
];

// some stuff happens...

localConnection = new RTCPeerConnection(iceConfiguration);

Run Code Online (Sandbox Code Playgroud)

所以,这在本地有效,但是当我与一些朋友远程测试时,它不起作用。可能的情况是它们都位于对称 NAT 后面,并且我需要使用 TURN 服务器,但我听说 NAT 配置有点罕见,因此它似乎可能适用于至少一个人。这是设置 STUN 服务器的正确方法吗?我真的只能找到一篇关于此的教程,网上最多的内容是关于如何构建自己的 TURN/STUN 服务器而不是如何使用......

小智 6

  1. STUNa和服务器之间是有区别的TURN,Google 提供免费STUN服务器可供使用,虽然不建议用于应用程序,因为你想在出现问题时进行控制,但对于一个用于学习的小项目来说绝对没问题,如果这是你的情况并且可以降低项目的复杂性。(我也不认为在有一些用户的小项目上使用它有那么糟糕)

  2. 如果不是这种情况,您将需要自己进行设置。网上有很多关于如何执行此操作的教程,但您确实需要一台服务器。它的要点是打开某些端口并使用一些基本工具(例如coturn. 我建议您从头到尾遵循这样的指南,如下所示:

https://medium.com/av-transcode/what-is-webrtc-and-how-to-setup-stun-turn-server-for-webrtc-communication-63314728b9d0

  1. 设置完成后,您需要在应用程序中使用它,如下所示:

const iceConfiguration = {
    iceServers: [
        {
            urls: 'turn:my-turn-server.mycompany.com:19403',
            username: 'optional-username',
            credentials: 'auth-token'
        }
    ]
}

const peerConnection = new RTCPeerConnection(iceConfiguration);
Run Code Online (Sandbox Code Playgroud)

  1. 涉及很多步骤,您需要了解很多不同的细微差别,这个问题非常普遍,所以我试图给您一些指导,但您需要继续阅读自己,因为这是一个庞大而复杂的主题,所以做好准备。