我有一种情况,我有两个客户端连接到同一个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" ,也被删除了。
问题在于,此时两个客户端都断开连接,也无法删除该节点。有没有办法制定一个"规则"在服务器上检查写/更新时的那些值,如果两者都是假的,或者可能是其他一些我没想到的方法,删除节点?
我想避免使用外部服务器应用来监控连接并进行删除(避免我的意思是,在这种情况下我无法做到这一点)。
答案 0 :(得分:0)
我可以想到两种方法来实现这个目标:
让最后一个客户端断开连接,删除您想要删除的onDisconnect
handler
而不是保留布尔值来指示客户端是否已连接,仅存储已连接的客户端。所以:
fbnode-123-456
connectedClients
clientA
clientB
当clientA和clientB节点都消失时,Firebase会自动清除它们上方的connectedClients
和fbnode-123-456
个节点(如果它们被清空)。