使用 WebRTC 使 node.js 应用程序成为 PEER
Posted
技术标签:
【中文标题】使用 WebRTC 使 node.js 应用程序成为 PEER【英文标题】:Making a node.js application a PEER with WebRTC 【发布时间】:2016-07-20 16:36:13 【问题描述】:所以,我有一个 Web 应用程序,它生成大量颜色信息缓冲区,我想将这些信息发送到在本地网络中的另一台机器上运行的节点应用程序。 Web Sockets 对我来说似乎不够快。我一直在寻找使用 UDP,似乎 WebRTC 是从浏览器执行此操作的唯一方法。似乎需要注意的是,WebRTC 只是 PEER to PEER(浏览器到浏览器)。我想,我可以使用 node webkit 来模仿我的另一个“PEER”。在我的节点应用程序中,我可以处理“信号”并将其设置在我的网络应用程序的 RTCPeerConnection 中。因此,我可以将我的数据从我的网络应用程序发送到我的节点应用程序(本地网络)。在某些情况下,我有一台运行本地软件来驱动灯具的计算机,我想使用网络应用程序来控制灯光。
为了简化这个问题,我怎样才能使 RTCPeerConnection 从浏览器到节点 webkit 应用程序?
任何帮助将不胜感激。
谢谢!
-杰克
【问题讨论】:
【参考方案1】: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 webrtc 或称为openWebrtc 的更新的实现(由爱立信提供)。 openWebRTC 的开发人员非常自豪能够在各种硬件(如 raspberry pi 和 ios 设备)上运行他们的实现。
最适合我的是electron-webrtc(它又使用electron-prebuilt)以获得更好的兼容性。它创建了一个隐藏的 Electron 进程(它基于 Chromium,因此 WebRTC 支持很棒!)并与该进程通信以在 Node.js 中启用 WebRTC。这会增加很多开销。
它旨在与 RTCDataChannels 一起使用,因此不支持 MediaStream API。
其他资源:https://github.com/webrtcftw/goals/issues/1
【讨论】:
感谢您的回答。我很难找到 node.js 的 webrtc 客户端 OpenWebRTC 网站似乎已移至openwebrtc.org——虽然它不支持 node.js!这个项目可能会有所帮助:github.com/ibc/mediasoup 有没有人为 Node js RTCPeerConnection 找到任何好的解决方案。基本上,我想从客户端向节点发送视频流,以便节点可以实时处理视频流。【参考方案2】:2019 年更新
目前,解决这个问题最好和最简单的方法是使用webrtc 模块。检查samples 以获得灵感。该模块可以满足您的需求,使用 N-API 实现并使用 Canvas 模块从客户端流中合成新视频。希望这能帮助那些将来面临这个问题的人。
【讨论】:
以上是关于使用 WebRTC 使 node.js 应用程序成为 PEER的主要内容,如果未能解决你的问题,请参考以下文章
在 node.js 中使用 socket.io 通过 webrtc 广播实时音频