【发布时间】:2012-10-03 00:45:37
【问题描述】:
想象一下,我想用 HTML5(客户端)和 node.js(服务器)创建一个实时多人游戏。
我需要非常快速地将数据从服务器传输到客户端,反之亦然。
在本机应用程序中,我会使用 UDP 来获取最多的数据(玩家位置,...),因为它比 TCP 快得多,并且在丢失时它并不重要。
在HTML5 中,我可以(仅)使用WebSockets。 WebSockets 位于 TCP 之上,因此速度不够快,无法获得良好的性能。
我听说过WebRTC,但我不知道这是否可以解决这个问题。
有人用过吗?
(我知道,大多数浏览器仍然不支持 WebRTC,但这对我来说并不重要。)
【问题讨论】:
-
您确定 websocket 对您的用例来说太慢了吗? tcp 套接字在您的 websocket 会话期间保持打开状态,因此您不必担心每条消息的连接开销。
-
TCP:可靠的消息传递;所有数据都得到确认 所有数据的交付都得到管理,丢失的数据会自动重新传输。 UDP:不可靠、尽力而为的交付,没有确认因此 TCP 完全是这个用例的错误技术。
-
尝试使用 WebSockets 实现它并测量它是否真的太慢(不用说,抽象你的传输实现,这样如果 WebSockets 确实不令人满意,你可以使用其他东西而不报废很多代码)。现在你过早地优化了。
-
Firefox Nightlies 已经开始实现 WebRTC 数据通道:hacks.mozilla.org/2012/11/… 我想知道是否可以使用 Node.js 作为连接中的一个节点。
标签: javascript html node.js websocket webrtc