为什么 null 几乎总是传递给 RTCPeerConnection?

cer*_*eny 1 html javascript webrtc

我在 Internet 上看到的几乎每个 WebRTC 示例都涉及创建一个RTCPeerConnection参数为null. 该规范要求传递两个参数:ICE 服务器配置和媒体约束。

我注意到,如果您通过时两个请求来自同一个路由器null(例如,var pc = new RTCPeerConnection(null);),从技术上讲,一切仍然有效。我不确定它是否适用于跨网络。有人可以在这里更清楚地了解发生了什么吗?

wpp*_*wpp 5

我在 Internet 上看到的几乎每个 WebRTC 示例都涉及创建一个带有单个参数 null 的 RTCPeerConnection。

我想对于这些示例,大多数时候假设您在同一台计算机上。所以你真的不需要任何 iceServers。(并且示例不想为您提供“免费”的眩晕服务器/转弯服务器?)

我注意到,如果在传递 null 时两个请求来自同一个路由器,那么从技术上讲,一切仍然有效。

如果客户端不在同一网络上,则不会出现这种情况。因为没有 stun 服务器(通过 iceServers 配置),客户端无法获得服务器反射地址。

编辑:

正如@syno在评论中指出的那样

目前,webRTC 的“安全”问题之一是 STUN 和 TURN 服务器配置在创建对等连接时以明文形式传递。任何人都可以查看 JavaScript 代码并使用您的服务器。这就是为什么需要使用带有 REST API (code.google.com/p/rfc5766-turn-server/wiki/turnserver) 的 TURN 服务器来获得临时“时间戳”以限制不需要的用户的使用。当目的是学习或展示 webRTC 的基本概念时,不需要在一个简单的演示中添加所有这些复杂性

  • 我还要补充一点,目前,webRTC 的“安全”问题之一是 STUN 和 TURN 服务器配置在创建对等连接时以明文形式传递。任何人都可以查看 JavaScript 代码并使用您的服务器。这就是为什么需要使用带有 REST API (https://code.google.com/p/rfc5766-turn-server/wiki/turnserver) 的 TURN 服务器来获得临时“时间戳”以限制不需要的用户的使用. 当目的是学习或展示 webRTC 的基本概念时,不需要在一个简单的演示中添加所有这些复杂性。 (2认同)