想象一下Agar.io.与聊天应用程序不同,当玩家在地图上移动时,对于每个玩家,用户(或玩家)和其他环境对象的列表将不断变化。这是因为每个客户端都无法接收有关每个对象的更新,因为地图太大而滞后太多。因此,使用Socket.IO更新客户端的以下哪种方法会更有效:
如果有比上述两种更好的方法,请勾勒出来。
答案 0 :(得分:1)
这是一个多向量权衡决策,因此如果没有一些测量和可能的实验,我们无法真正告诉您哪种情况是最佳的。但是,我们可以指导您可以用来完成分析的思路。
首先,要缩放和缩短延迟,您需要:
向您希望的每个客户端发送较少的消息:
向您要发送的每个客户端发送较小的消息:
减少发送给每个客户端的数据大小。这意味着如果自上次与此客户通信后某些数据没有发生变化,则不要重新发送该数据。这表明你的第二个选项(客户端更新自己的本地数组)是一种更好的方法,因为你只需要向客户端发送增量,它就会记住以前的状态。
仔细分析您发送给客户的数据格式,并尽可能减小其大小。如果您尝试优化传输大小,直接JSON通常不是最有效的数据发送方式。