WebRTC是正确的吗? (实时多人游戏)
想象一下,我想用HTML5(客户端)和node.js(服务器)创build一个实时多人游戏。
我需要将数据从服务器传输到客户端,反之亦然。
在本地应用程序中,我会使用UDP
来获取大多数数据(玩家位置,…),因为它比TCP
更快,而且在丢失的时候没有任何危险。
在HTML5
我可以(仅)使用WebSockets
。 WebSocket在TCP之上,因此速度不够好,性能不错。
我听说过WebRTC
,但我不知道这是否可以解决这个问题。
有人有经验吗?
(我知道,WebRTC仍然不支持大多数浏览器,但这对我来说并不重要。)
在WebRTC方面,听起来像是你需要的是DataChannel:见草案协议和HTML5 Rocks文章 (免责声明:我写的!)
DataChannel是一项正在进行的工作,尚未被任何浏览器实现。
至于其他WebRTC组件,MediaStream(getUserMedia)则支持Chrome,Firefox Nightlies和Opera; RTCPeerConnection在Chrome中处于稳定状态,位于旗帜之后(即将出版的版本),并在2013年第一季度承诺Firefox 18。
编辑:RTCDataChannel现在已经在Firefox和Chrome上实现。
Chrome“单页”演示: simpl.info/dc,Firefox 演示 。
RTCDataChannel分别提供基于会话的/可靠的以及无连接/不可靠的传输,类似于本地客户端中的TCP和UDP。 更多信息在这里 。 截至2013年,这是一个可行的技术,尽pipe只是在以后的Chrome和Firefox版本。
根据html5rocks.com ,现在也可以使用二进制types进行传输。 所以你应该拥有一个高效的本地UDP客户端的所有function。 然而 ,我还不能确定二进制转换是否已经从webrtc存储库, 已经被修复 ,一直到Chrome,还是现在只在Chrome Canary中可用。