Web RTC 点发现

Web RTC Peer Discovery

所以我正在尝试开发一个 Web 应用程序,它能够在 Web 应用程序的用户之间进行视频通话。理论上,来电者 A 可以查看 Web 应用程序中的目录,看到来电者 B 在线并进行视频通话。我的问题是你如何获得来电B的IP和端口号?我意识到这些信息需要通过信令进行交换,但是如果呼叫者 A 不知道呼叫者 B 的 IP 或端口号是什么,他们如何将他们的信息传递给呼叫者 B?

我同意上面的评论,即 ICE 在这里对于交换媒体流至关重要,但我假设您是从信号的角度问这个问题。

对此的一个解决方案是基于 MQTT 构建的简单在线功能和称为保留消息的功能。基本上,每个客户端都会以订阅者获得的保留消息的形式将文档发布到 MQTT 主题。保留的消息保留在代理上,直到它们被客户端清除或客户端与代理断开连接(使用 MQTT Last Will and Testament 消息)。保留的消息包含可用于连接到其他对等点的信息(例如,对等点主题名称)。你可以在这里看到它的演示:https://angular-rtcomm.wasdev.developer.ibm.com

这都是开源实现的。如果您想快速开始演示,可以使用 Node.js 与 Mosca MQTT 代理和 Rtcomm 开源来完成。如果您熟悉 Node.js,设置大约需要 20 分钟。说明可以在上面的 link 中找到。

对等点通过 ICE 协议发现彼此。这是正常 WebRTC 连接建立的一部分。 ICE 有方法来发现必要的信息,如 IP 和端口。

您需要担心的是将 ICE 候选人 从一个同行转移到另一个。您可以通过 信号服务器 执行此操作。 Peer A 正在发现 ICE 候选人,并将在 RTCPeerConnection 对象上向您展示它们;你把这些候选人,发送到你的服务器,服务器将它们发送到对等点 B,在那里它们必须被并入对等点 B 的 RTCPeerConnection;整个事情也反过来了。一旦交换了足够多的 ICE 候选者并发现了匹配的可能性,两个对等方将建立直接连接。

信令服务器的实现由您和您的特殊需求决定。