完整的WebRTC堆栈

时间:2013-01-17 10:19:51

标签: node.js networking distributed p2p webrtc

  1. 我正在尝试了解使用文本,音频和视频交换创建应用的正确工具。作为服务器端工具,我想使用node.js。
  2. 有很多例子显示了客户端代码,但服务器端呢?我知道,对于WebRTC服务器只需要用于信令目的,但我找不到一个描述性的giude帮助我找到怎么说:“嘿,这是这个人,他想跟你说话,所以这是他的IP”或类似的东西。
  3. 如何确保我建立直接连接?如何建立最高性能的连接?我知道有一些NAT遍历协议,但我如何明确地使用/启用它们?
  4. 我可以通过连接多对多对等体并拥有一些信令/身份验证服务器来创建分布式Skype网络吗?或者可能只使用一些对等体作为服务器进行信令发送?

2 个答案:

答案 0 :(得分:3)

  1. 以上所有内容均可通过Flash Media Server(或Red5 for open source)等软件获得。如果要使用Node.JS,则需要创建节点服务(消息队列,媒体服务器)或使用已有的节点服务,并让Node.JS处理它们之间的交互。因此,所有这些都是必需的:

    • 使用网络套接字的节点网络服务
    • 节点/其他消息代理(mq)
    • 节点/其他媒体服务器(FMS,Red5)
    • 可选,用于多个节点Web服务(Redis)的缓存服务
  2. 您可以选择Flash,它对RTMFP / RTMP有很大的支持。如果您真的想要WebRTC,则必须为p2p发现创建一个STUN节点服务,该服务连接到缓存服务以处理授权。

  3. RTMFP也是一个选项,webrtc也是。最高性能取决于您如何定义性能:质量?潜伏?怎么应该有偏见?如果你想要低延迟,请转到p2p。如果您想要录制功能,可以是rtmp或节点webrtc中继。

  4. 是的,但您很可能需要一个团队才能这样做:)

答案 1 :(得分:2)

发现几乎所有答案:)

  1. 服务器端工具没有任何限制,因此您可以随意使用。 Node.js非常适合。出于通信目的,可以使用WebSockets或XHR,但对其他任何内容都没有限制。
  2. 在创建连接的过程中,浏览器将生成一些包含所有所需数据的事件。你只需将它发送到双方并在那里处理它。还有提供/回答系统,因此只有双方协议才能建立联系。
  3. 默认情况下,浏览器会尝试建立最佳连接。如果无法完成,它将回退到TURN,后者通过服务器转换数据。
  4. 可以实现DataChannels。