Android、Firebase登录时间有点长,出现WebSocketException

Android、Firebase登录时间有点长,出现WebSocketException,websocket,firebase,firebase-authentication,Websocket,Firebase,Firebase Authentication,我正在使用authWithCustomToken方法登录Firebase。登录大约需要5秒或更长时间。我启用了Firebase日志(setLogLevel(Logger.Level.DEBUG))来监视是否存在任何问题。日志在这里(我修剪了一点,如果有必要,我可以给它一个链接): PS:android firebase客户端版本为2.5.0 此日志是否显示有错误 我应该忽略它吗?如果是,为什么登录时间太长?输出中没有确定任何时间影响的信息。但据我所知,水流看起来很正常。正在重定向前两个连接。然后

我正在使用authWithCustomToken方法登录Firebase。登录大约需要5秒或更长时间。我启用了Firebase日志(setLogLevel(Logger.Level.DEBUG))来监视是否存在任何问题。日志在这里(我修剪了一点,如果有必要,我可以给它一个链接):

PS:android firebase客户端版本为2.5.0

此日志是否显示有错误


我应该忽略它吗?如果是,为什么登录时间太长?

输出中没有确定任何时间影响的信息。但据我所知,水流看起来很正常。正在重定向前两个连接。然后,第三个连接到达正确的服务器,该服务器以“已建立实时连接”进行响应。

问题是在
保持同步(true)
行之后进行身份验证。同步节点有大约250KB的数据。我认为同步数据会阻碍我的身份验证。另一方面,firebase无法同步该节点,因为它必须通过身份验证才能读取该节点。(看起来像死锁)。我不确定实际原因是什么,但删除
keepSynced(true)
line现在解决了我的问题

Firebase ref = new Firebase("my_firebase_url");
ref.child("matches").keepSynced(true); // removed this line
ref.authWithCustomToken(...);

但是,前两个连接总是失败。第三次成功。这很奇怪,不是吗?不,据我所知这很正常。在初始连接时,您访问“随机”Firebase服务器。由于这不太可能是您需要的服务器,因此可以重定向到正确的服务器。由于各种原因,在您的案例中,这是一个分两步的过程。但是IIRC最终的服务器名应该在第一次建立实时连接后存储。问题是这种情况每次都会发生,而不是有时。我会评论更新。感谢您的帮助,我刚刚添加了一个运行
authWithCustomToken
的简单活动。这是活动34634483,在这个问题的id之后。通过wifi,它在Nexus 7上1秒内进行身份验证(事实上,根据logcat输出,大约0.2s)。在3G网络中,第一次身份验证需要5到15秒,接下来是2到3秒。嗯?真正地这是非常出乎意料的我看看能不能复制。感谢您的反馈,也许值得将此作为一个答案(用一个小代码片段显示解决问题的语句顺序)。
Firebase ref = new Firebase("my_firebase_url");
ref.child("matches").keepSynced(true); // removed this line
ref.authWithCustomToken(...);