【问题标题】:Resource limits around multiple Firebase connections in client-side JavaScript客户端 JavaScript 中多个 Firebase 连接的资源限制
【发布时间】:2013-09-26 01:52:56
【问题描述】:

假设我想制作一个完全在浏览器中运行的大型实时 2D 开放世界风格游戏,我想使用 Firebase 来实现。

让我们也抛开有关安全性的问题;我稍后会问这些。 ( =

玩家从 (0,0) 开始,可以向任何方向移动。我在空间上对世界进行哈希处理,以便任何给定的 x,y 坐标都成为一个(或嵌套的)键,我可以使用它来生成 Firebase ref:

var getKey = function(x, y) {
  return Math.floor(x / 100) + ':' + Math.floor(y / 100);
}

var key = getKey(currX, currY);

var ref = new Firebase('https://whatever.firebaseio.com/world/' + key);
// ...

类似的东西。当玩家在世界各地移动时,我很确定我需要保持 4 到 9 个对 Firebase 的引用才能进行更改。这也可能会增加一倍或三倍,这取决于我如何构建数据:其他玩家是存储在world/ 树中还是其他地方?那种东西。

我不希望播放器的浏览器获得它不关心的更新。我想在玩家四处移动时“过期”旧的 refs,这样浏览器就不会花费资源来谈论遥远的世界。

是否足以让 ref 实例超出范围并获得 GCed?或者我还需要做些什么来通知裁判我不想再使用它了吗?

我想到的另一件事不是担心有多少引用,而是跟踪on 回调。当玩家离开世界特定区域的范围时,我可以off 任何我设置的回调。这足以让我的裁判停止与 Firebase 交谈吗?

【问题讨论】:

    标签: javascript web-applications firebase


    【解决方案1】:

    Firebase 仅保留一个打开的连接(使用 Web 套接字)来处理与单个 Firebase 实例的通信,即使您为其创建了多个 ref。所以就像你说的那样 - 只要你“关闭”非活动裁判上的任何事件,你就应该很好。

    您不妨考虑在开发过程中启用 Firebase 调试日志记录。它将让您看到浏览器与其服务器之间发生的所有通信。这样,您将能够验证客户端是否仅获得必要的更新。要启用调试日志记录,请在创建第一个 Firebase 引用之前的任意位置添加以下行:

    Firebase.enableLogging(true);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-29
      • 2016-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多