WebRTC数据通道服务器与客户端的UDP通信

13

是否有可能在Node.js上使用WebRTC数据通道,以一种模拟Socket.io(WebSockets)功能(最好是API)的方式,但使用UDP?

实际上,我希望拥有一个运行Node.js的服务器,在其中浏览器客户端可以通过JavaScript建立全双工双向UDP连接。

2个回答

8

有一个适用于node.js的WebRTC模块:https://js-platform.github.io/node-webrtc/

安装可能会非常繁琐,但如果成功了,您就能让node.js服务器像浏览器一样作为WebRTC对等体。这样,您就可以在浏览器和node.js服务器之间打开数据通道。

我们在研究项目中使用它来评估性能特征。


有没有一种接口可以将node.js服务器连接到多个浏览器客户端,并处理它们,类似于Socket.io中处理多个websocket客户端的方式? - Willem
1
也许你可以使用WebRTC JS包装器之一。像webrtc.io或orca.js这样的包装器的问题在于它们是为在浏览器上使用而构建的,因此您很可能需要使其适应服务器端使用。 - Makkes
所以这些包装器允许浏览器客户端充当与多个其他浏览器通信的终点? - Willem
@Willem,如果您使用浏览器客户端作为终点,则无法通过UDP转发信息。 - Benjamin Trent
@bwtrent,也许"end-point"不是准确的术语。我指的是一种作为所有通信中心的方式。因此,一个节点可以与所有其他节点通信,但其他节点只能与这个节点通信。如果这些包装器可以实现这个目的,那么它们就可以被改写用于我在Node.js中需要的目的,对吧? - Willem

4

理论上你应该能够实现这个功能。但是,你需要一个支持WebRTC数据通道的Node模块,以便像连接到其他对等点一样连接它。不幸的是,浏览当前模块时,我没有看到实现数据通道的模块。

另一个需要注意的是,WebRTC数据通道可以配置为不同的可靠性模式,可靠模式通过SCTP实现(FirefoxChrome)。

在测试数据通道时,推荐使用Firefox,因为WebRTC工作被分成两部分,Chrome最初专注于PeerConnection,而Firefox专注于DataChannel(因此Firefox在DataChannel的实现方面仍领先)。


谢谢,这证实了我的猜测。 我希望有人创建一个模块,模仿Websockets的API,并支持多个连接的客户端。 - Willem
1
我最感兴趣的是不可靠模式(0次重传)。WebRTC是否通过SCTP或其他方式支持此功能? - Willem
1
我认为不可靠模式最初是建立在Chrome中的RTP上的,但最终一切都将基于SCTP。Mozilla与数据通道使用的SCTP库在这里:https://code.google.com/p/sctp-refimpl/。 - tomtheengineer
@tomvLine,所以如果我没有指定可靠模式,WebRTC DataChannel会使用UDP作为其传输方式吗? - onmyway133
SCTP用户空间实现通过UDP进行隧道传输,但理论上操作系统可以本地支持它。有关详细信息,请查看Firefox使用的实现:https://code.google.com/p/sctp-refimpl/ - tomtheengineer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接