当其中一个属性设置为特定值时,是否可以操作Firebase服务器上的对象?

时间:2015-05-21 20:58:30

标签: firebase firebase-security

我有一种情况,我有两个客户端连接到同一个firebase节点,然后通过该通道来回通信。当客户端连接时,它创建客户端(X)连接属性并将其设置为true,当它断开连接时将其设置为false。当两个客户端都已连接时,它看起来像下面的结构。

- fbnode-123-456 (this is a uuid that both clients know before connecting)
   - clientAconnected: true
   - clientBconnected: true

现在我想要发生的是,当两个客户端都断开连接并且它们的连接值都被设置为false时,包含节点,在上面的示例中" fbnode-123-456" ,也被删除了。

问题在于,此时两个客户端都断开连接,也无法删除该节点。有没有办法制定一个"规则"在服务器上检查写/更新时的那些值,如果两者都是假的,或者可能是其他一些我没想到的方法,删除节点?

我想避免使用外部服务器应用来监控连接并进行删除(避免我的意思是,在这种情况下我无法做到这一点)。

1 个答案:

答案 0 :(得分:0)

我可以想到两种方法来实现这个目标:

  1. 让最后一个客户端断开连接,删除您想要删除的onDisconnect handler

  2. 中的任何节点
  3. 而不是保留布尔值来指示客户端是否已连接,存储已连接的客户端。所以:

    fbnode-123-456
        connectedClients
          clientA
          clientB
    

    当clientA和clientB节点都消失时,Firebase会自动清除它们上方的connectedClientsfbnode-123-456个节点(如果它们被清空)。