【发布时间】:2020-02-09 01:05:01
【问题描述】:
在了解 WebRTC 时,我发现关于 TURN 服务器的一件事很难理解。让我快速回顾一下我的理解。
信令服务器: 是传递 SDP 数据包以协商 WebRTC 连接的自定义(未指定协议)实现。最有趣/古怪的实现是您将 SDP 数据包复制/粘贴为纯文本,正如Chris Ball 所解释的那样(旁注:谁说“实现”意味着您必须编程?:-D)。
STUN 服务器:它会告诉您您可以访问的 IP + 端口。再见 NAT!哦,只有 80% 的情况。
另外 20%,我对 TURN 服务器 的理解是:一个可供双方(或更多)P2P 连接方访问的服务器,它通过 TURN 服务器中继来自这些方的数据(Traversal Using Relays Around Nat ) 并将其发送给另一方。在RFC 5766中有描述。
我的情况(以及由此产生的问题)
- 我有一个信令服务器(耶!)
- 我有一个 STUN 服务器(万岁!)
- 我有一个运行 Socket.io 的 NodeJS 服务器,用于当 P2P 通过信号和 STUN 服务器失败时。它只是获取传入流量并将其广播给任何需要收听的人。
我知道我的服务器是一个定制的东西,可以实现与 TURN 服务器相同的功能。
我的问题:与 TURN 服务器相比,这种定制服务器有何不同?
注意:在我的例子中,它是 NodeJS + Socket.io,但它可以是任何自定义构建的服务器(为了好玩,我还使用 WebSockets 创建了一个 Ruby/Rails 实现,没有 HTTP 长轮询作为后备)。
【问题讨论】: