WebRTC Trickle ICE带有TURN,可通过Internet连接

问题描述 投票:0回答:1

我无法使用两个单独的公共IP地址在浏览器之间建立WebRTC连接,这些IP地址位于NAT之后(也就是通常通过Internet进行),不允许仅使用STUN信息进行连接,而是需要TURN服务器帮助。

我已经在局域网中建立连接取得了成功,但是到目前为止,我还没有遇到任何有关如何使用javascript webrtc建立基于TURN的简单连接的说明。似乎所有教程在收到“ typ relay”类型的sdp并在此结束时都很高兴。我也从Coturn收到了“ typ relay” sdp,但是我从来没有通过TURN通过Internet进行ICE连接,也没有找到有关此情况的说明(我认为这很典型)。

根据firefox的about:webrtc -page所做的最大努力为我提供了ICE连接努力,其中ICE原始连接的远程和本地候选者都是具有正确TURN服务器公用IP和UDP端口的转向中继地址。但是,此ICE连接由于我未知的原因而失败。

[此外,我试图找到与TURN服务器有关的所有神秘的安全性要求,但是我不确定Chrome或Firefox到底需要什么级别的设置。我当前的coturn配置如下:

external-ip=13.X.X.X/172.X.X.X
listening-port=3478
log-file=stdout
lt-cred-mech
max-port=36980
min-port=36940
fingerprint
no-cli
realm=example.com
user=usernamehere:passwordhere
verbose
cert=/etc/letsencrypt/live/example.com/cert.pem
pkey=/etc/letsencrypt/live/example.com/privkey.pem
no-sslv2
no-sslv3

我很乐意看到一个教程或说明,其中有人编写了一个简单的代码,实际上是使用webrtc和TURN服务器在互联网上传递数据的。到目前为止,我发现仅使用同一浏览器,使用websocket或成功获得STUN信息的示例。

仅通过成功建立ICE连接就可以了。

编辑:原来(出于双关语意)我的发信号方法太慢。要使用基于UDP的TURN中继服务器,您需要比我的信令方法(将人工复制粘贴到另一个选项卡)更快地交付候选对象。 Websocket提供了一种足够快地传递信令信息的方法。

webrtc turn
1个回答
0
投票

您通常可以在这里简单地添加您的TURN凭据:

config: {
 'iceServers': [
     { url: 'stun:stun.l.google.com:19302' },
     {
         url: 'turn:domain:port',
         credential: 'password',
         username: 'username'
    }
 ]
}

我总是使用以下TURN-config:

listening-port=80
listening-ip=internalIP //can be empty
relay-ip=intermalIP //can be empty
external-ip=publicIP
realm=yourDomain
server-name=yourDomain
lt-cred-mech
user=User:Pass
© www.soinside.com 2019 - 2024. All rights reserved.