【问题标题】:how to get tcp connection candidate from twilio stun/turn server?如何从 twilio stun/turn 服务器获取 tcp 连接候选者?
【发布时间】:2017-05-08 23:09:48
【问题描述】:

我正在使用 twilio 免费帐户并生成 twilio turn 服务器和凭据。使用这些作为 ICEServerOptions,我得到了只有 UDP 连接的候选人,但我需要一个 TCP 连接才能使用 webRTC 进行可靠的数据传输。

有没有办法从 twilio stun/turn 服务器获取 TCP 中继/srflx 连接? 如果是,请告诉我怎么做?

谢谢 乔丹

【问题讨论】:

  • 我刚刚生成了一个 NAT Access Token 并有两个 TCP 候选对象。你能分享你用来生成它的代码吗?
  • 我的命令:Maheshs-MacBook-Air:~ maheshjena$ curl -XPOST api.twilio.com/2010-04-01/Accounts/… \ > -u "AC5ebd66f6153d2bbb8bb8f8b794c95765:[MY_AUTH_TOKEN_*****]"
  • 在这个命令之后,我得到了我的轮到服务器链接、用户名和凭据。当我将它用作 ICE 服务器选项并获取候选者时,没有 srflx 或中继的 TCP 候选者,我只能找到 UDP 候选者。
  • UDP 是 WebRTC 的首选传输方式。如果您只需要 TCP 候选,那么您可能需要调整 iceServers 响应以删除 UDP 选项。
  • 实际上我最初的问题是,twilio ice 服务器没有为 srflx 和中继选项提供任何 TCP 候选。正如你所说,我得到了 2 个 TCP 候选者,但它们用于主机而不是用于 srflx 或中继。我还尝试删除所有 UDP 候选者并在提供和回答中使用这 2 个 tcp 主机候选者,但 SetRemoteDescription() 对这些候选者失败。我知道要支持 TCP 中继连接,TURN 服务器需要在其中支持端口 80 和 443。有没有办法从 twilio 服务器获取 srflx/relay 连接的 TCP 候选?

标签: tcp webrtc twilio nat turn


【解决方案1】:

据我所知,默认情况下,Twilio 不会将 TURN/TCP 添加到他们的 Twilio 客户端配置中,尽管他们将来可能会这样做。

现在,您需要使用类似以下调用的方式显式添加它:

Twilio.Device.setup(token, { 
"iceServers": [ { "url": "turn:global.turn.twilio.com:443?transport=tcp" } ] 
});

也就是说,你应该注意以下几点:

  1. WebRTC 不能在可靠的连接上运行以进行音频和视频传输。如果您的目标是实时媒体,那么 UDP 是您最好的朋友。 TCP 仅在防火墙阻止 UDP 时用作必要的邪恶
  2. 一旦 WebRTC 能够通过 UDP 连接其 ICE 候选者,它就会停止尝试,并且在大多数情况下,您根本不会看到 TCP 候选者连接 - 由于 (1),它们的优先级较低

【讨论】:

  • 感谢@Tsahi 的回答。实际上我想使用 webRTC 进行文件传输,这就是我想要 TCP 候选的原因。我已经尝试过你建议的方式,但它仍然没有为 srflx 或中继提供 tcp 候选者。您是否尝试过以任何不同的方式从 twilio 服务器获取 tcp 候选对象?
  • 文件传输使用WebRTC的数据通道。它通过 SCTP 运行,您可以将其配置为可靠。请参阅此处html5rocks.com/en/tutorials/webrtc/datachannels 和此处bloggeek.me/sctp-data-channel 了解更多信息
  • 感谢@Tsahi,我一定会检查的。美好的一天。
猜你喜欢
  • 2015-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多