javascript—在客户端之间共享状态的服务器上,单个js对象可以存储多少数据?

voj3qocg  于 2021-09-23  发布在  Java
关注(0)|答案(1)|浏览(459)

我有一个socket.io服务器,它支持多人浏览器游戏。正在进行的单独匹配存储在服务器端内存中的单个对象中:

const matches = {};

当玩家创建一个匹配时,我会为这个对象添加一个新的唯一键,用于跟踪关于特定游戏的信息。所以当玩家移动时,我会这样做(例如简化代码):

matches[uniqueKeyForMatch] = newValidatedMatchState;

--在哪里 newValidatedMatchState 是描述此特定匹配的大型数据树。“在本例中,它的各种子字典和子数组包含数百个单独的数字、布尔和字符串数据。大约200-800个单独的数据块,如 5"some text" ,每场比赛。
我想知道的是,如果我有100个并发匹配,那么 matches 对象可以有效地存储那么多数据吗?从这个问题上,我看到了一些限制,但我不确定除了有两个变量,比如 matches1matches2 并在它们之间分割数据。有没有更有效的方法?

3htmauhk

3htmauhk1#

正如在另一个问题中提到的,这不是一个真正的问题。实际上,在达到任何其他类型的限制之前,您都会耗尽内存。不过,存储几百/千个匹配项听起来并不是什么问题。
如果您的匹配是一种更持久的数据,您希望存储更长的时间,那么您应该开始将匹配存储在文件或数据库中。
如果将其存储在数据库中不适合您的需要,或者您的应用程序的流量太大,数据库无法跟上,请拆分您的应用程序。有多个游戏服务器。你的“主服务器”只会告诉用户“你的游戏在 <server1> ".
此外,您可能会发现map很有趣,它是一个比常规js对象更好的键值存储对象。

相关问题