运行Opera时,.onDisconnect()可能出现Firebase错误?

时间:2013-04-26 10:24:13

标签: firebase

首先,如果之前已经有类似的问题,我道歉,老实说,我找不到任何问题。

我目前正在使用Firebase进行聊天,并且感谢那些体面的文档我到目前为止取得了很好的进展,所以这不是真正的问题。然而,在测试时我遇到了一个可能是错误的小问题。

为了管理聊天中的状态,我将值推送到与用户的唯一ID对应的位置。然后在断开连接时删除此推送值。 通过这种方式,我可以可靠地确定用户的状态,而无需担心他与Firebase的并发连接数(即浏览器标签)。

这实际上适用于Firefox,Chrome和Safari,但Opera似乎存在问题。使用Opera时,如果您关闭正在运行聊天的标签页,则断开连接时的值。它会在2分钟左右之后被删除,但考虑到使用其他浏览器时会发生同样的事情,它会花费太长时间。

出于好奇,我尝试使用Opera presence example,我能够重现完全相同的行为。如果我在另一个标签中打开相应的Firebase,然后运行示例,输入名称,最后关闭运行该示例的标签,我可以看到,当我关闭标签时,相应Firebase中的值不会被删除。 / p>

如果你能告诉我这是不是我做错了什么,或者它实际上是一个错误,我将不胜感激。

此致 泥泞的

1 个答案:

答案 0 :(得分:3)

Opera的页面转换模型与所有其他浏览器不同。大多数浏览器在加载和离开页面时触发事件。 Opera实际上将旧页面保持在内存中以使后退按钮更快。当你在opera中单击“back”时,它实际上正在恢复旧页面。

因此,我们无法确切知道某人何时在Opera中留下了一个页面。结果,我们被迫只是等待服务器超时以确定有人离开了。

所以,简短的回答,onDisconnect操作在Opera中工作,但它们可能需要几分钟才能生效。在所有其他浏览器中,如果连接被彻底终止,则操作将立即发生,如果不是,则在几分钟后终止。