【问题标题】:firebase slow to establish connection to databasefirebase 建立与数据库的连接缓慢
【发布时间】:2020-07-11 22:59:15
【问题描述】:

我有一个使用 Google Firebase 身份验证的网络应用程序,最近我注意到当您在 Android 设备上将该应用程序后台运行然后返回到该应用程序时,需要很长时间才能重新建立网络套接字连接到数据库。

我启用了日志记录,这就是发生的事情。从日志记录的时间可以看出,重新连接需要将近 5 分钟 - 为什么?

logger.ts:80 [2020-07-11T10:26:54.376Z]  @firebase/database: p:0: from server: {"r":80,"b":{"s":"ok","d":""}} 
logger.ts:80 [2020-07-11T10:32:34.296Z]  @firebase/database: c:0:0:0 Websocket connection was disconnected. 
logger.ts:80 [2020-07-11T10:32:34.297Z]  @firebase/database: c:0:0:0 WebSocket is closing itself 
logger.ts:80 [2020-07-11T10:32:34.298Z]  @firebase/database: c:0:0: Realtime connection lost. 
logger.ts:80 [2020-07-11T10:32:34.300Z]  @firebase/database: c:0:0: Closing realtime connection. 
logger.ts:80 [2020-07-11T10:32:34.300Z]  @firebase/database: c:0:0: Shutting down all connections 
logger.ts:80 [2020-07-11T10:32:34.302Z]  @firebase/database: p:0: data client disconnected 
logger.ts:80 [2020-07-11T10:32:34.304Z]  @firebase/database: p:0: Window isn't visible.  Delaying reconnect. 
logger.ts:80 [2020-07-11T10:32:34.305Z]  @firebase/database: p:0: Trying to reconnect in 297779.38668296754ms 
logger.ts:80 [2020-07-11T10:32:34.309Z]  @firebase/database: 0: onDisconnectEvents 
logger.ts:80 [2020-07-11T10:32:36.069Z]  @firebase/database: p:0: Listen called for /NEWLADDER/2020 default 
logger.ts:80 [2020-07-11T10:37:32.088Z]  @firebase/database: p:0: Making a connection attempt 
logger.ts:80 [2020-07-11T10:37:32.096Z]  @firebase/database: getToken() completed. Creating connection. 
logger.ts:80 [2020-07-11T10:37:32.099Z]  @firebase/database: c:0:1: Connection created 
logger.ts:80 [2020-07-11T10:37:32.105Z]  @firebase/database: c:0:1:0 Websocket connecting to ********
logger.ts:80 [2020-07-11T10:37:32.764Z]  @firebase/database: c:0:1:0 Websocket connected. 
logger.ts:80 [2020-07-11T10:37:32.767Z]  @firebase/database: c:0:1: Realtime connection established. 
logger.ts:80 [2020-07-11T10:37:32.768Z]  @firebase/database: p:0: connection ready 

【问题讨论】:

    标签: firebase firebase-realtime-database firebase-authentication


    【解决方案1】:

    Firebase 客户端尝试使用指数回退自动重新连接。很难说为什么在您的情况下这需要 5 分钟,但鉴于上述情况,您的应用程序在后台运行的时间越长,重新连接所需的时间就越长,这是有道理的。

    如果这是一个常见问题,我建议在应用再次进入前台时明确断开并重新连接客户端。所以:

    FirebaseDatabase.getInstance().goOffline();
    FirebaseDatabase.getInstance().goOnline();
    

    【讨论】:

    • 嗨弗兰克,这是 JavaScript SDK 的一部分吗?我的应用是 PWA。
    • 它似乎已经解决了时间问题,现在它在发出请求时立即发生。
    • 日志没有显示我的 Firebase 连接尝试,只是在连接状态发生变化时。在我的测试设备上关闭移动数据后,我希望日志会显示连接尝试。是否有任何地方可以提供 Firebase 显然使用的指数回退策略的细节?我对广告下载尝试使用了一种自制的指数回退策略,并想对其进行比较。
    • Once eyou enable debug logging 您应该会在 logcat 输出中看到有关 SDK 连接尝试的日志。
    猜你喜欢
    • 2016-07-08
    • 1970-01-01
    • 2015-11-06
    • 2016-12-15
    • 2018-01-26
    • 1970-01-01
    • 1970-01-01
    • 2019-05-22
    • 1970-01-01
    相关资源
    最近更新 更多