我应该使用WebRTC或Websockets(和Socket.io)进行OSC通信

时间:2014-02-20 07:54:37

标签: node.js tcp websocket udp webrtc

我正在开发一个应用程序,它将发送OSC控制消息,据我所知,数据报包从网页到OSC接收器(服务器),如Max / MSP或Node或任何其他。

我知道通常使用UDP是因为速度对于使用OSC完成的实时/视听控制工作很重要(这也是我将要做的工作),但我知道可以使用其他方法。

现在,例如,我将OSC从浏览器发送到node.js服务器(使用socket.io),然后从node.js服务器发送到Max(这是我最终想要数据的地方),使用socket.io。我相信这意味着我正在使用websockets并且延迟/延迟并不坏。

我很好奇,现在WebRTC已经出局,如果我应该将我的工作的未来放在那里。在我使用OSC的所有工作中,我一直使用UDP,并且只使用Socket.io/Websockets连接,因为我不了解WebRTC。

关于我应该做什么的任何建议。我特别感兴趣的是

1.如何将OSC消息从浏览器直接发送到OSC服务器(而不是先通过节点服务器)

2.如果我应该使用Node / Socket.io / Websocket方法发送OSC数据,还是应该查看WebRTC?

2 个答案:

答案 0 :(得分:3)

这不是一个关于任何特定技术挑战的问题,而是一个发现挑战。并且基于意见。

但我会尝试提供自己的想法,因为其他人也可以使用。

  • 如果OSC服务器支持WebSockets或WebRTC连接,那么您可以直接使用其中一个连接。
  • 根据浏览器的性质,您可能需要支持许多协议而不是特定协议。许多浏览器都有不同的支持:http://caniuse.com/rtcpeerconnection,除非您的用户可以“强制”使用特定的浏览器。
  • WebRTC意味着高性能。我不确定将它与UDP进行比较是好的,因为它比UDP更多,并且每个浏览器的实现方式各不相同(内部)。
  • 您需要与服务器而不是客户端进行通信,而WebRTC主要用于对等通信。因此,您需要从服务器端的延迟和CPU角度精确研究性能优势。

UDP的好处是某些数据包可以被丢弃/跳过/未送达,因为它不是“强制”数据,如图片帧或声音片段,只会导致质量下降,这是“预期的”行为在流媒体世界。 WebSockets将确保数据的传递,并且它的“价格”是最终减慢数据包队列速度的机制,以确保有序和有保证的数据传输。

答案 1 :(得分:3)

关于你的第一个问题 - 如果浏览器和服务器之间有一个direkt Websocket链接的解决方案(对于OSC) - 你可以看一下:

我发布了一个 osc-js 实用程序库,它使用UDP / Websocket桥接插件执行相同操作: