我制作了一个非常基本的基于 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
STUN
a和服务器之间是有区别的TURN
,Google 提供免费STUN
服务器可供使用,虽然不建议用于应用程序,因为你想在出现问题时进行控制,但对于一个用于学习的小项目来说绝对没问题,如果这是你的情况并且可以降低项目的复杂性。(我也不认为在有一些用户的小项目上使用它有那么糟糕)
如果不是这种情况,您将需要自己进行设置。网上有很多关于如何执行此操作的教程,但您确实需要一台服务器。它的要点是打开某些端口并使用一些基本工具(例如coturn
. 我建议您从头到尾遵循这样的指南,如下所示:
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)