我有一个大厅,我希望用户同步。因此,当用户在应用程序运行时关闭其互联网时,应将其删除。我知道Firebase不支持服务器端编码,因此编码需要是客户端。 How to delete firebase data after "n" days和Delete firebase data older than 2 hours的答案不回答这个问题,因为他们希望用户在线并且他们有互联网连接。所以我的问题是,当他们没有互联网时,是否可以删除用户?我想也许让用户每5秒更新一次值是一个想法,当没有完成更新时,该大厅中的其他用户将删除该播放器。这种方式并不好,因为每个玩家需要每5秒检索和上传大量数据。解决这个问题的最佳方法是什么?
编辑:为了简短,让我们说每个用户都有一张图片。连接用户时图像应为绿色,断开连接时图像应为灰色。
编辑2:在考虑完之后,很难准确地在客户端服务器上呈现连接的用户。这就是为什么,如果没有人有不同的解决方案,我应该添加另一个可以执行服务器端代码的服务器。由于服务器数量很大,我想知道应该使用哪个服务器。服务器应运行一个简单的功能,该功能仅检查用户是连接还是断开连接,并且可以与Firebase通信。如果我是正确的,它应该如下所示:
但是服务器还需要直接与用户通信。我绝对不知道从哪里开始。
答案 0 :(得分:1)
如果我没有完全错误,您应该可以使用onDisconnect。
来自Firebase,文档:
如何onDisconnect:工作原理: 建立onDisconnect()操作后,它将存在于Firebase实时数据库服务器上。服务器检查安全性以确保用户可以执行所请求的写入事件,并通知客户端它是否无效。然后,服务器监视连接。如果它在任何时候超时,或者被客户端主动关闭,服务器第二次检查安全性(以确保操作仍然有效),然后调用该事件。
在生产应用中我使用onDisconnectRemoveValue,当我关闭应用时,用户将自己从大厅中移除。在飞行模式下转动设备时不确定它是如何工作的,但是从文档中可以看出应该没有问题。
有一件事:当你在真实设备上更好地测试它时,模拟器会出现关闭和打开的问题,至少我已经安装了。
编辑:所以当您将设备置于飞行模式时,我检查了onDisconnect,它确实有效!问题是,它大约在1:30左右移除用户,所以如果您阅读文档或询问支持,您可能(并且可能只是)能够找到一种方法来设置您想要的时间