2

我正在尝试创建一个用户使用 Firebase 随机匹配的游戏。

我匹配它们的想法是这样的:

  1. 用户 A 来了,读取游戏列表。如果没有任何游戏等待开始游戏。将自己设置为发起者,将对手设置为无效。
  2. 用户 B 来了,读取游戏列表。找到用户 A 的游戏(对手为空)并加入游戏(他成为对手)
  3. 如果用户 C 出现在用户 B 阅读游戏列表的那一刻和用户 B 将自己写为对手的那一刻之间会发生什么(对他来说,对手仍然是空的)。基本上是并发问题。

我已经阅读过有关交易的信息,但我不是 100% 确定它们在这种情况下会有所帮助(阅读没有对手的游戏,将对手写入其中一款游戏),因为我已经看到它们在增加价值而不是阅读/写入数据。

4

1 回答 1

2

事务块用于并发。他们所做的是防止两个用户同时尝试写入同一区域时出现问题。就像你说的,这在喜欢的情况下很常见。因此,如果游戏当前只有 1 名玩家,而您保存的值为 0,那么其他玩家就知道游戏是“开放的”。当玩家尝试连接到该游戏时,他们会写入该区域并将 0 更改为 1。如果另一个玩家同时尝试连接,他们的事务块现在将触发。当他们获得数据时,他们会看到 1,但不是 0。此时,您退出并寻找新游戏。不确定这是否是最好的方法,但它应该有效。

于 2017-09-11T14:29:03.870 回答