【问题标题】:Web RTC Peer DiscoveryWeb RTC 对等发现
【发布时间】:2016-02-17 18:13:16
【问题描述】:

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

【问题讨论】:

  • 在 webrtc 中,他们通过 ICE 候选者相互发现,这就是为什么你一开始需要一个信令服务器

标签: web-applications webrtc peer-connection


【解决方案1】:

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

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

信令服务器的实施取决于您和您的特定需求。

【讨论】:

  • 感谢您为我澄清这一点,让候选人与其他同行对我来说在概念上没有意义。
  • @Deceze ,在你的回答中你需要一个服务器,他们是同伴在不运行服务器的情况下发现其他同伴的一种方式吗? “您将这些候选人发送到您的服务器,服务器将它们发送到对等 B”这件事将它们变成了客户端服务器模型,以使对等点进行连接
  • @Akhil 如果您有其他 P2P 对等点发现机制,您当然可以在无服务器的情况下交换该信息。 WebRTC 将这部分实现完全由您决定。实际上,在大多数基于 Web 的场景中,您可能需要一台服务器,但这并不是 WebRTC 的固定要求。
  • @Akhil 当然还有其他协议,但它们超出了 WebRTC 的范围,它们可能无法在浏览器中运行。是的,有一个先有鸡还是先有蛋的问题:如果您已经有其他可以进行协商的 P2P 协议,那么您为什么要使用 P2P 协议来引导 P2P 协议?只有当您现有的协议不能像 WebRTC 那样做音频/视频时,这才是明智的;例如一些纯粹用于对等发现的本地 UDP 广播协议。
【解决方案2】:

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

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

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

【讨论】:

  • 谢谢,我看看这个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-27
  • 1970-01-01
  • 1970-01-01
  • 2012-10-24
相关资源
最近更新 更多