使用 node.js 作为 WebRTC 对等点?

Posted

技术标签:

【中文标题】使用 node.js 作为 WebRTC 对等点?【英文标题】:Use node.js as a WebRTC peer? 【发布时间】:2013-06-21 03:14:36 【问题描述】:

存在哪些模块可以在 WebRTC 中使用 node.js 作为对等点?我想以比 P2P 更多的客户端/服务器方式使用 WebRTC,因为它明显能够不可靠地发送数据包。 (AKA,我不希望 TCP 通过保证数据包按顺序到达而造成巨大的延迟)

如果我必须使用精简的浏览器页面作为服务器,那可能会起作用……但是,它确实不是最理想的。 Node.js 会让事情变得更顺畅,而且可能也更可靠。

谢谢!

【问题讨论】:

Node.js WebRTC client的可能重复 【参考方案1】:

看看Licode (WebRTC MCU) 的 Erizo 组件。它有一个流控制器和 webrtc 控制器,用 c++ 编写,带有 js 接口。它可能会帮助您获得一两个想法。

【讨论】:

【参考方案2】:

现在有一个 WebRTC 的 Node 实现,但 MediaStreams 除外。

https://github.com/js-platform/node-webrtc

【讨论】:

【参考方案3】:

WebRTC 有一个 c++ 接口。 WebRTC 基于 libjingle 项目,但使用 JSEP(javascript 会话建立协议)而不是 XMPP 来发送 STUN/TURN 信息以进行 NAT 隧道。当我不久前看到这两个项目时,这两个项目正在合并的过程中,所以编译/链接它是一个 PITA。这可能在去年有所改善。

我们的目标是将 WebRTC 的 native API 公开为带有 node addon api 的节点模块,并将其打包为一个类似于浏览器内 API 的 npm 模块。跨浏览器 polyfill 将向您展示它的外观。

你可以用它做很多很酷的事情(通话录音、SIP 连接器、浏览器的 .torrent 扩展等)我真的鼓励你试试这个!

【讨论】:

【参考方案4】:

我找到的最相关的包是http://js-platform.github.io/node-webrtc/我设法构建它并使用它一点点......开发人员非常乐于助人,我认为这是你现在最好的选择

【讨论】:

【参考方案5】:

解决方案是使用libjingle 或licode/erizo。它们都需要编译,但 erizo 提供了 NodeJS 接口。 Libjingle 由 Google 创建。

不幸的是,您必须编译每个库,并且 没有 用于 Debian、Ubuntu 或其他平台的二进制包。

【讨论】:

【参考方案6】:

看看PeerJS: Simple peer-to-peer with WebRTC。

您需要PeerJS-server 来发送信号。

导游:http://peerjs.com/

【讨论】:

抱歉,WebSockets 并没有完全使用与 WebRTC 相同的协议。不过,感谢您的回答! WebSockets 使用 TCP。 WebRTC 的类似解决方案允许与 WebSockets 相同的功能,除了通过 UDP 将是最佳的。【参考方案7】:

我使用 Node js 和 socket io 并取得了成功

网上有很多教程

【讨论】:

Socket.io 是在客户端和服务器之间进行双向通信的一种方式,但据我所知,它不使用 WebRTC。此外,据我所知,Socket.io 仅支持基于 TCP 的传输,这正是选择 WebRTC 的原因。

以上是关于使用 node.js 作为 WebRTC 对等点?的主要内容,如果未能解决你的问题,请参考以下文章

WebRTC 对等服务器连接

检测 WebRTC 连接中的离线对等点

一种使用 node.js 直接对等数据传输的方法?

通过 WebRTC 将视频对等点录制到服务器时如何处理数据包丢失

PHP棘轮和WebRTC

是否可以将 WebRTC SDP 报价转换为答案?