Как обнаружить событие onDisconnected в firebase при внезапном отключении wifi? - PullRequest
0 голосов
/ 17 октября 2019

Я занимаюсь разработкой приложения для видеочата с использованием базы данных Firebase в реальном времени. Все работало нормально, но теперь кажется, что есть небольшая проблема. Мы полагались на событие отключения Firebase, чтобы изменить статус пользователя с онлайн на автономный режим, который прекрасно работает в обычных условиях (пользователь входит в систему, использует приложение и затем закрывает браузер / вкладку). Но при использовании приложения, если пользователь отключил Wi-Fi, отключенное событие не запускается, и статус пользователя остается в сети навсегда, пока Wi-Fi не будет снова включен, и пользователь не закроет окно браузера или не выйдет из приложения.

IЯ пытался использовать сервер nodejs вместе с socke.io для обработки присутствия, но, похоже, он тоже не работает.

database.ref().child(`users/uids/${user.id}/friends/${this.authUser.id}`).onDisconnect().update({
  isOnline:false,
})

Я ожидал, что событие onDisconnect сработает, когда Wi-Fi будет отключен. Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 17 октября 2019

Это не так, как onDisconnect работает. Попробуйте что-то вроде этого:

var userRef = dbRef.child('..path to user object in database');
userRef.onDisconnect().update({
  isOnline: false,
  isBusy: false
});

Обратите внимание, что onDisconnect иногда может занять 1-2 минуты, чтобы действительно выполнить свою работу.

Если вам нужно что-то быстрее, вы можете периодически писать что-то вроде

lastOnlineTimestamp: {'.sv': 'timestamp'}

в вашем пути пользователя и заставьте других пользователей проверять, сколько лет этой отметке времени.

Документы по теме:

https://firebase.google.com/docs/reference/js/firebase.database.OnDisconnect#update

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