【问题标题】:should I use websockets or webRTC for 4player game我应该使用 websockets 还是 webRTC 进行 4 人游戏
【发布时间】:2016-02-06 16:19:18
【问题描述】:

我目前正在使用 node.js 和 socket.io 制作一个 html5 游戏。 游戏的基本原理是 4 个人绕着圈子移动,试图互相撞击……

我的问题是我应该使用 Websockets 还是 WebRTC? 什么最适合这种交流?与 4 名玩家或通过服务器点对点?

随意分享你的想法,我对这些东西很陌生..

【问题讨论】:

  • 您要问的主要问题是:谁拥有状态和数据?如果状态和数据存储在客户端上并直接相互发送/接收,如果客户端断开连接会发生什么?游戏的一部分会消失吗?如果他们通过捣乱数据来作弊怎么办?出于这些原因,您是否希望服务器拥有数据(或至少对其进行验证)?

标签: javascript node.js html websocket webrtc


【解决方案1】:

WebRTC 不仅可以用于流式传输音频/视频,还可以用于发送数据。 P2P 在发送大量数据时很有用。

在您的情况下,流量非常小。而且我看到了使用服务器的许多优点 - 同步,或者在未来,身份验证或历史记录等功能。

还有实现部分。使用 WebRTC,您仍然需要一个信令服务器。而且 websocket 更容易实现,因为您没有会话协商部分。连接速度也更快。

就你个人而言,我不会打扰 WebRTC。

稍后更新:还有浏览器支持的问题:websockets vs WebRTC,正如@Myst 在 cmets 中提到的那样。

【讨论】:

  • 我还要提到 WebRTC 的浏览器支持目前是有限的。 Websockets 将适用于更广泛的浏览器和客户端。
  • 如果使用最新的 socket.io,您可以使用 socket.io p2p 在客户端之间建立 webrtc 数据通道,而无需任何额外开销。 socket.io/blog/socket-io-p2p
  • 感谢您的回复,浏览器支持并不那么重要,因为我正在为一项针对新技术的学校作业执行此操作。是否可以在 4player 环境中使用此 p2p socket.io,因为它表示两个对等方之间的双向事件通道?想我会先用套接字试试看,看看事情进展如何..
  • @NiCkNewman,你说的毫无意义是什么意思?您是指任何一方都可以篡改数据流的事实吗?是的,这是可能的。而且没有办法通过服务器路由 WebRTC 流量。这将超越它的目的:p2p 连接。
  • @Kevin,我没有这方面的参考资料。但根据我的经验,websocket 会立即连接,而 WebRTC 会话协商可能需要至少几秒钟。虽然我还没有尝试连接仅用于数据传输。
【解决方案2】:

两者都用。

WebRTC 数据通道非常适合在客户端之间以尽可能低的延迟发送数据,因为数据不通过服务器。

从你描述的游戏来看,低延迟听起来很关键,所以我肯定会考虑使用数据通道尽快更新对手的位置。

同时,我也会通过网络套接字向服务器发送数据,作为游戏中的真相守护者,以验证没有人在作弊。

四人组应该不是问题。让每个客户端在“网格”中打开与所有其他客户端的对等连接。

【讨论】:

    猜你喜欢
    • 2014-03-21
    • 2016-12-03
    • 2016-01-12
    • 1970-01-01
    • 2012-02-14
    • 2013-06-02
    • 1970-01-01
    • 1970-01-01
    • 2021-05-22
    相关资源
    最近更新 更多