8

想象一下,我想用 HTML5(客户端)和 node.js(服务器)创建一个实时多人游戏。

我需要非常快速地将数据从服务器传输到客户端,反之亦然。

在本机应用程序中,我会使用UDP最多的数据(玩家位置,...),因为它比它快得多,TCP并且在丢失时它是不重要的。

HTML5我可以(仅)使用WebSockets. WebSockets 位于 TCP 之上,因此速度不够快,无法获得良好的性能。

我听说过WebRTC,但我不知道这是否可以解决这个问题。

有人有经验吗?

(我知道,大多数浏览器仍然不支持 WebRTC,但这对我来说并不重要。)

4

2 回答 2

2

就 WebRTC 而言,听起来您需要的是 DataChannel:请参阅草案协议HTML5 Rocks 文章(免责声明:我写的!)

DataChannel 是一项正在进行的工作,尚未由任何浏览器实现。

至于其他 WebRTC 组件,Chrome、Firefox Nightlies 和 Opera 都支持 MediaStream (getUserMedia);RTCPeerConnection 在 Chrome 稳定版中,在一个标志后面(即将发布的版本中没有标志),并承诺在 2013 年第一季度用于 Firefox 18。

编辑:RTCDataChannel 现已在 Firefox 和 Chrome 上实现。

Chrome 的“单页”演示:simpl.info/dc,Firefox演示

于 2012-10-12T17:50:26.200 回答
1

RTCDataChannel 提供基于会话/可靠以及无连接/不可靠的传输,分别类似于本机客户端中的 TCP 和 UDP。更多信息在这里。截至 2013 年,这是一项可行的技术,尽管仅在后来的 Chrome 和 Firefox 版本中才有。

根据 html5rocks.com,现在还可以使用二进制类型进行传输。因此,您应该拥有高效的本地 UDP 客户端所具备的所有功能。但是,我还不确定二进制传输是否已从 webrtc 存储库(已修复它)一直到 Chrome,或者它是否仍仅在现阶段仅在 Chrome Canary 中可用。

于 2014-07-23T16:06:02.003 回答