问题标签 [turn]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
p2p - 什么类型的 NAT 组合需要 TURN 服务器?
根据:
https://en.wikipedia.org/wiki/Network_address_translation
有 4 种类型的 NAT 配置:
全锥、地址受限、端口受限和对称。
现在,假设我们在不同的网络上有客户端 A 和客户端 B,并且隐藏在各自独立的 NAT 后面。
如果他们想要 p2p 通信,“客户端 A NAT 类型”+“客户端 B NAT 类型”的哪些组合需要涉及 TURN 服务器(即无法通过 STUN 协议解决)?
例如,我会怀疑:
“client A NAT = Symmetric + client B NAT = Symmetric”需要一个 TURN 服务器。
其余的组合是什么?
google-app-engine - 自定义服务器上的 AppRtc
我已经在我自己的 GAE 帐户上部署了来自 Google 的 apprtc ( https://github.com/webrtc/apprtc ) webrtc 示例项目。我发现开发者必须要自己的TURN服务器才能支持NAT穿越,不能使用谷歌的TURN服务器。
除了 TURN 之外,开发者还需要自己提供其他服务吗?
有免费的 TURN 服务器可以使用吗?
webrtc - ICE 协议中 ice-options 的用户是什么?
为什么在 ICE 协议中使用 ICE 选项?
在 RFC 5245 中提到,它是一系列标识代理支持的选项的令牌。
代理支持哪些类型的选项?
默认情况下它是 google-ice 还是其他?
如果不是 google-ice,我该如何选择 ice-options?
oauth - 如何使用 Coturn 和 oAuth 配置 WebRTC
我想将coturn 与 oAuth 一起使用。如果我理解正确,我需要做两件事:
- 将 oAuth 令牌存储在 coturn 正在使用的数据库中
- 发送
ACCESS-TOKEN
和USERNAME
STUN 属性
第一点很清楚,但我需要如何更改我的 WebRTC 客户端才能实现第二点?
如果没有 oAuth,我会RTCPeerConnection
像这样初始化我的:
WebRTC 1.0 草案定义了一个枚举,RTCIceCredentialType
所以我认为我需要像这样更改我的配置:
使用 Wireshark 我看不到该ACESS-TOKEN
属性。有什么想法或有人知道一个可行的例子吗?
webrtc - 使用 TURN 中继在 webrtc 中传输媒体
假设 A 想与 B 通信
通过向服务器 T1 发送 Allocate 请求,A 得到中继地址和端口为 R1:r1
同理,B发送Allocate请求转服务器T2,B得到中继地址和端口为R2:r2
现在A要向B发送媒体,然后A向R1:r1发送媒体,以R2:r2为目的地址,当turn server在R2:r2接收到媒体后,转发给B。就是webrtc中的媒体传输,以这种方式转发与否?
如果 A 不知道 B 的中继传输地址,那么 A 如何到达 B?
webrtc - 在 WebRTC 中使用 Stun/Turn
我正在用 C 语言开发一个小型 webrtc 应用程序。我正在使用 sip 信令进行 webrtc 调用。我对 stun/turn/ice 的使用有以下疑问。
当我开始通话时,我会发送带有提议 (SDP) 的邀请。在 SDP 中,我们需要放置 ICE 候选人。
我有两种可能的情况。为了解释它,我将举一个例子。假设两个端点是A和B。我有一个 sip 代理服务器说P。另外我有一个转弯服务器(支持眩晕和转弯),说它是T。
情况 1
所有实体A、B、P和T都在同一个专用网络中。这里需要 STUN 分辨率吗?如果是,那么我需要处理的所有眩晕请求/响应是什么?
案例 2
这里A在专用网络中。其他实体B、P和T在公共网络中。在这种情况下,我希望我们需要进行 STUN/TURN 解析。假设我从 STUN 开始,并获得了主持人和反身候选人。我在一些例子中看到,Permission,Channel Bind请求也被使用。如果我只使用 STUN(没有 TURN),在我得到主持人和反思候选人之后,我需要做任何额外的事情吗?
除此之外,是否有任何好的开源可用于 C 中使用 gnutls(无 openssl)的 stun/turn 客户端?
webrtc - 如何在 ICE 协议中验证对?
相关的 WebRTC,ICE 协议给出了哪对地址将用于地址对之间的直接媒体传输。
设 A 和 B 是两个端点
为了选择用于 A 和 B 之间直接通信的地址,A 首先收集候选者,对候选者属性进行编码,对 SDP 提议消息进行编码,并将其发送到另一个端点。
当 B 收到 A 的 offer 消息时,B 收集候选人,用自己的候选人列表对 SDP 回答消息进行编码,并将其发送给 A。
在此过程结束时,每个代理都有本地候选人和远程候选人的完整列表。它将它们配对,从而产生候选对。要查看哪对有效,每个代理使用 STUN req/resp 执行连接检查。
执行多少次连通性检查以提名有效的候选对?
关于 webRTC 调用,剩下的 ICE 连接检查是什么?
要为 webRTC 调用开发 ICE 模块,我必须遵循 RFC5245 中的每个步骤或其他任何内容?
webrtc - 如何轻松测试来自我的 PC 的 WebRTC 请求是使用 TURN 服务器还是直接连接?
我对 WebRTC 工作原理的理解有点不稳定,但我知道如果我的设备无法与另一个对等方建立直接连接(由于 NAT、防火墙等),TURN 服务器将用作中继。
我是否可以使用公共服务来确定我的设备是使用 TURN 服务器还是直接连接到另一个对等方?
amazon-web-services - 在 AWS 上运行的 Turn-server 没有响应
我在这个问题上苦苦挣扎了将近一个月,我能够在 EC2 实例上设置一个 rfc5766-turn-server(v3.2.3.1) 而没有任何问题。
当 TURN 在 3478 上侦听时,一切正常,但在端口 80 上,它大部分时间都可以工作,但在某些时间间隔(不规律地发生)它变得无响应,即使重新启动该进程也不会改变任何东西。我在端口 3478 上并行运行的进程不会遇到这个问题。
80端口运行命令:
在端口 3478 上运行的命令:
我认为,这个问题更多地与 AWS 网络相关,较少涉及转向服务器,但话说回来,我对 AWS 或 TURN 服务器知之甚少。有没有人在端口 80 上遇到过这个问题。我相信在端口 80 上运行很重要,尤其是当对等方位于阻止大多数端口的公司防火墙后面时。
成功分配时的日志(我已通过 INTERNAL_IP 更改了 EC2 的内部 ip):
无响应时的日志(我注意到它仍然显示连接尝试,一个区别是,它显示对等连接的 IP,而不是成功场景中的 INTERNAL_IP):