firebase медленно устанавливает sh соединение с базой данных - PullRequest
0 голосов
/ 11 июля 2020

У меня есть веб-приложение, использующее проверку подлинности Google Firebase, и недавно я заметил, что когда вы запускаете приложение в фоновом режиме на устройстве Android, а затем возвращаетесь к приложению, восстановление его занимает очень много времени sh соединение через веб-сокет с базой данных.

Я включил ведение журнала, и вот что произошло. Как видно из таймингов в журнале, для повторного подключения потребовалось почти 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 

1 Ответ

0 голосов
/ 11 июля 2020

Клиент Firebase пытается автоматически повторно подключиться с экспоненциальным откатом. Трудно сказать, почему в вашем случае это занимает 5 минут, но, учитывая вышесказанное, имеет смысл, что чем дольше ваше приложение было в фоновом режиме, тем больше времени может потребоваться для повторного подключения.

Если это обычная проблема, Я рекомендую явно отключить и повторно подключить клиента, когда приложение снова станет активным. Итак:

FirebaseDatabase.getInstance().goOffline();
FirebaseDatabase.getInstance().goOnline();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...