我想为我正在开发的Web应用程序实现点对点视频聊天功能。在进行研究之后,我决定使用webRTC的Javascript API是可行的方法。该应用程序在前端使用AngularJS,在后端使用Ruby on Rails。我在构思此应用程序时遇到的主要问题是将前端与后端链接,以及创建和维护用户流之间的连接。
对于网络的信令方面,我想利用ActionController :: Live和Ruby gem em-eventsource将来自服务器的实时消息推送给用户,并指出他们的哪些连接在线。然后,当他们准备建立连接时,他们将创建一个自定义房间,并将URL发送给他们希望连接的用户,从而创建他们的服务。一旦用户点击发送给他们的链接,他们就会发回答案。当用户响应时,将为每个用户开始ICE候选进程。您是否认为这是建立PeerConnection的足够信令渠道?我错过了哪些其他主要参与者?
根据我对WebRTC的RTCPeerConnection所做的研究,一旦建立初始连接,并且两个用户都拥有与其流相对应的公共IP地址,则通过RTCPeerConnection维持连接,更具体地说,getPeerConnection() 。我错了吗?还有其他因素我不考虑吗?
WebRTC使用getUserMedia方法创建MediaStreams的过程非常简单。创建这些流后,可以将它们添加到已建立的RTCPeerConnection中。作为本地和远程流。
如果您对我有任何其他建议,请告诉我。我真的想用webRTC创建这个功能,看起来好像很有趣
答案 0 :(得分:1)
当然有很多方法可以处理呼叫信令,因此我不打算对您的方法做出具体评论。我要说的是,如果你计划支持ICE滴流,ICE候选人将在这个过程的早期开始流动,所以你在尝试连接到同伴时几乎立即需要在你的同伴之间建立一个开放的信令通道。
我们在MQTT之上开发了WebSphere解决方案,这是一个开放且非常简单的发布/订阅协议。您可以将任何开放的MQTT代理与协议一起使用,并且有许多开源组件可用于使WebRTC开发变得非常简单,包括AngularJS WebRTC模块(angular-rtcomm),核心纯JavaScript模块等等。我们还发布了一个简单的基于JSON的协议作为此开源解决方案的一部分。你可以看一下signaling protocol。您还可以在此处阅读有关整体解决方案的更多详细信息(www.wasdev.net/webrtc)。在这里,您将找到基本JavaScript库以及许多开源示例解决方案。所有这些都可以在github上分叉。
通常,您希望在协议上构建信令,以便随着时间的推移而增长。它应该适用于Web和移动应用程序。根据我们的经验,我们花了很多时间才能完成所有这些工作,我们的目标不仅是支持点对点呼叫,还支持在后端使用Dialogic的XMS PowerMedia服务器等媒体资源进行多路调用支持,录制/播放等。我们还需要通过SIP中继支持联盟,因此我们希望确保协议可以轻松转换为SIP信令,同时还支持VP8和H.264等媒体协议之间的转码。
请注意,如果您希望仅支持WebRTC客户端之间的点对点呼叫,则只能使用这些rtcomm开源组件,包括开放式MQTT代理,并节省大量时间。你可以在几个小时内完成任务。启用了新的rtcomm-1.0服务的WebSphere Liberty beta的开发人员版本还包括内置的MQTT代理,并支持上面链接的开放WebRTC信令协议。您可以使用WebSphere进行开发,并免费部署生产中的单个服务器。如果您愿意,也可以将Ruby on Rails与Liberty一起使用。
即使您决定不使用Liberty,您也可以使用所有开源组件以及Mosquito(这是一个开源MQTT代理)之类的东西来快速获得解决方案。还有许多MQTT客户端可用于许多不同的编程语言,包括JavaScript,Java等。查看https://eclipse.org/paho/。如果您决定构建自己的信令协议,您可能仍会发现这些开源组件有助于了解我们如何与WebRTC PeerConnection进行集成。