Websocket 与 WebRTC 对于同一频道中的多个用户?

问题描述 投票:0回答:2

我想在网络应用程序上开发一个小型角色扮演游戏。为了快速解释一下,每个玩家都有一个角色表,可以使用对其他玩家造成伤害的技能和攻击。

一般是5人同时玩家,另外还有聊天功能

我最初会使用网络套接字在玩家和服务器之间进行通信以进行交换:消息、损坏或其他需要在其他玩家中共享的数据。

但我看到 WebRTC 也创建了点对点通信并排除了服务器的通道。但如果我明白的话,点对点对于只有两个用户来说更好?

我真的不明白在这种情况下最好的解决方案是什么以及为什么?

致以诚挚的问候。

websocket web-applications socket.io webrtc chat
2个回答
3
投票

WebSocket 是严格的客户端-服务器,就像普通的 HTTP 一样:每个客户端都与服务器通信,并且所有客户端-客户端通信都必须由服务器中介。另一方面,WebRTC 允许客户端直接相互通信,而无需通过服务器。这可以降低延迟并提供更好的隐私性,因为数据不需要通过服务器。

但是,在大型组中,每个 WebRTC 对等点都需要连接到所有其他对等点:对于 n 对等点,连接总数为 n(n-1)/2。例如,在只有 10 名参与者的组中,您将需要建立 45 个连接。考虑到互联网的变幻莫测,这些都不会失败的概率基本上为零,因此您的应用程序将需要能够处理部分连接,这很难实现,而且几乎不可能调试。

在实践中,点对点 WebRTC 对于三到四名参与者的团体来说是一个很好的解决方案,但除此之外就无法使用。

请注意,WebRTC 还可以在客户端-服务器拓扑中使用,这比 WebSocket 具有更低的延迟,并且没有点对点错误处理的复杂性。做到这一点需要 WebRTC 的服务器端实现(我最喜欢的是 Pion),并且可能比您愿意处理的更复杂。


0
投票

WebSockets 可能会更好:由于游戏中玩家需要互相更新他们的操作,并且有聊天功能,因此 WebSockets 可能是更好的选择。这就像有一位主持人跟踪一切并确保每个人都知道游戏中发生了什么。

© www.soinside.com 2019 - 2024. All rights reserved.