如何使用WebRTC、Node.js和Socket.io构建多用户视频聊天Web应用程序

6

我正在尝试制作一个支持多用户视频聊天的Web应用程序。我阅读了一篇有关WebRTC的文章,名为“入门WebRTC”(http://www.html5rocks.com/en/tutorials/webrtc/basics/),并在Codelab上进行了一些演示。但我仍然不知道如何将它变成一个三方会议呼叫。我对Node.js和Socket.IO了解不多,只是因为我正在尝试构建这个视频Web应用程序而开始学习它们。

所以我的问题是,WebRTC或Socket.IO的哪个部分确定可以加入超过2个用户参与呼叫?或者有哪些资源可以直接推荐给我?

提前感谢。

4个回答

9
WebRTC是一个点对点的协议(浏览器到浏览器),没有服务器,因此我们必须互相了解彼此的浏览器信息(你的浏览器编解码器、公网IP、端口等),才能够进行通信。因此,我们使用信令(socket.io: web socket双向通信协议)将一些关于我的浏览器的信息发送给节点JS服务器,并接收一些有关你的浏览器的信息,然后建立节点连接。
WebRTC也可以使用网状网络进行三方通信。例如,当你向我发送某些信息(浏览器信息)时,同时也将此相同的信息发送给其他节点。当我收到有关你的信息时,我会向你和其他节点发送有关我的信息,而在其他节点中也会发生这样的情况。
这里有一些关于网状网络的详细信息:http://en.wikipedia.org/wiki/Mesh_networking

4
我认为这里有两个不同的内容。WebRTC需要信令来建立两个节点之间的点对点通信。使用Node.js和Socket.io是正确的选择。
但是,决定第三方是否可以加入会议的不是WebRTC(或socket.io),而是您自己。这是信令的另一部分,与WebRTC无关。
这意味着您需要实现功能,例如设置会议室、发现可用会议室、加入会议室等。当三方会议启动并运行时,每个节点将拥有两个对等连接,分别连接另外两个节点。

2

0

我也看了那些协议,不确定node.js和sockets.io能做什么,但我认为无论他们在做什么,都是一个大错误,因为你只需要创建一个地方,让多个用户放置他们的网络摄像头图像,然后每个人都可以单独访问该地方以查看所有对话。这必须快速完成,因为视频没有问题,但如果信号慢,则无法理解。我会尝试其他方法。我想知道为什么他们不能解决如此简单的多方会议概念。

我在我的网站上创建了一个多聊天的模仿,现在无法向您展示,但基本上我每5秒保存一次视频帧,然后将它们存储(覆盖)在中央文件夹中保存的图像中。当有人登录时,他们可以看到所有在线的网络摄像头(使用PHP完成)。我不知道这是否有所帮助,但它有效且类似。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接