使用WebRTC使node.js应用程序成为PEER

时间:2016-04-01 01:46:16

标签: javascript websocket webrtc node-webkit

所以,我有一个Web应用程序,它生成大量的颜色信息缓冲区,我想发送给在本地网络中另一台机器上运行的节点应用程序。 Web套接字对我来说似乎不够快。我当时希望使用UDP,似乎WebRTC是从浏览器中实现这一目标的唯一方法。值得注意的是,WebRTC只是PEER到PEER(浏览器到浏览器)。我想,我可以使用node webkit来模仿我的另一个“PEER”。在我的节点应用程序中,我可以处理“信令”并让它自己设置在我的网络应用程序的RTCPeerConnection中。因此,我可以将我的数据从我的网络应用程序发送到我的节点应用程序(本地网络)。在某些情况下,我有一台计算机运行本机软件来驱动灯具,我想使用网络应用来控制灯光。

要解决问题,如何从浏览器到节点webkit应用程序进行RTCPeerConnection?

任何帮助都会非常感激。

谢谢!

-Jake

2 个答案:

答案 0 :(得分:7)

Node-RTCPeerConnection是一种尝试(当前WIP ),完全在JavaScript中创建一个符合规范的Node.js RTCPeerConnection实现,没有本机C或C ++代码。这使浏览器对等体能够与非浏览器(Node.js)对等体通信。

但你还不能用它来制作。

然后我们还有wrtc(node-webrtc),它为NodeJS提供了一个本机模块,支持符合标准的WebRTC功能的子集。具体来说,是PeerConnection和DataChannel API。

有太多人遇到wrtc的问题。因为它必须下载大量的源代码并构建它只是为了发现它在某些平台上很长一段时间后才会失败。不幸的是,它没有任何预先构建的软件包described in this issue

您可以使用名为google implementation of webrtcopenWebrtc或更近期的实施(爱立信)。 openWebRTC的开发人员非常自豪能够在诸如raspberry pi和iOS设备等各种硬件上运行它们的实现。

最适合我的是electron-webrtc(后者使用electron-prebuilt)以获得更好的兼容性。它创建了一个隐藏的Electron流程(基于Chromium,因此WebRTC支持很棒!)并与该流程通信以在Node.js中启用WebRTC。这增加了很多开销。

它适用于RTCDataChannels,因此不支持MediaStream API。

其他资源:
https://github.com/webrtcftw/goals/issues/1

答案 1 :(得分:0)

更新2019

当前,解决此问题的最佳和最简便的方法是使用webrtc模块。检查samples以获得灵感。该模块可以满足您的需求,并通过N-API实现并使用Canvas模块从客户端流中合成新视频。希望这对将来会遇到此问题的人有所帮助。