所以我正在尝试开发一个能够在Web应用程序的用户之间进行视频通话的Web应用程序。从理论上讲,来电者A可以查看网络应用程序中的目录,看到来电者B在线并进行视频通话。我的问题是你如何获得来电者B的IP和端口号?我意识到这些信息需要通过信令进行交换,但如果他们不知道来电者B的IP或端口号是什么,那么来电者如何将他们的信息传递给来电者B?
答案 0 :(得分:2)
对等体通过ICE协议发现对方。这是正常的WebRTC连接建立的一部分。 ICE有方法来发现IP和端口等必要信息。
您需要担心的是将 ICE候选人从一个对等方转移到另一个对等方。您可以通过信令服务器执行此操作。同伴A正在发现ICE候选人,并将在<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="ring"
android:thickness="2dp"
android:useLevel="true">
<solid android:color="@color/red" />
</shape>
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="ring"
android:thickness="2dp"
android:useLevel="true">
<solid android:color="@color/grey" />
</shape>
对象上向他们展示;你拿这些候选人,把它们发送到你的服务器,服务器将它们发送到对等方B,在那里它们必须被合并到同伴B RTCPeerConnection
;而整个事情也是相反的。一旦足够的ICE候选人被交换并且已经发现匹配的可能性,两个对等体将建立直接连接。
信令服务器的实施由您和您的特殊需求决定。
答案 1 :(得分:0)
我同意上述评论,ICE在此交换媒体流至关重要,但我假设您从信号的角度提出这个问题。
对此的一个解决方案是基于MQTT构建的简单呈现功能和称为保留消息的功能。基本上,每个客户端都以订阅者获得的保留消息的形式向MQTT主题发布文档。保留的消息保留在代理上,直到客户端清除它们或客户端断开与代理的连接(使用MQTT遗嘱和遗嘱消息)。保留的消息包含可用于连接到其他对等体的信息(例如,对等主题名称)。你可以在这里看到它的演示:https://angular-rtcomm.wasdev.developer.ibm.com。
这都是在开源中实现的。如果你想在现场快速演示,你可以使用Node.js和Mosca MQTT代理以及Rtcomm开源来实现。如果您熟悉Node,则需要大约20分钟进行设置。说明可以在上面的链接中找到。