kzen.dev
  • Вопросы
  • Метки
  • Пользователи
Оповещения
Вознаграждения
Регистрация
После регистрации, сможете получать уведомления об ответах и комментариях на Ваши вопросы.
Вход
Если у Вас уже есть аккаунт, войдите чтобы проверить новые уведомления.
Тут будут вознаграждения за добавленные вопросы, ответы и комментарий.
Дополнительно
Источник
Редактировать
 Kato
Kato
Вопрос

Определение потери/восстановления соединения с Firebase

Есть ли стратегия, которая будет работать в рамках текущего предложения Firebase для обнаружения потери и/или восстановления соединения с сервером?

Я рассматриваю некоторые непредвиденные ситуации в автономном режиме для мобильных устройств, и мне хотелось бы иметь надежное средство для определения того, когда слой данных Firebase доступен.

60 2012-07-05T19:59:44+00:00 6
Программирование
firebase
Решение / Ответ
Michael Lehenbauer
Michael Lehenbauer
5-го июля 2012 в 8:12
2012-07-05T20:12:08+00:00
Дополнительно
Источник
Редактировать
#16614780

Это часто запрашиваемая функция, и мы только что выпустили обновление API, которое позволит вам сделать это!

var firebaseRef = new Firebase('http://INSTANCE.firebaseio.com');
firebaseRef.child('.info/connected').on('value', function(connectedSnap) {
  if (connectedSnap.val() === true) {
    /* we're connected! */
  } else {
    /* we're disconnected! */
  }
});

Полная документация доступна на https://firebase.google.com/docs/database/web/offline-capabilities.

Sam Storie
Sam Storie
Редактировал ответ 22-го января 2017 в 1:09
82
0
 Baris
Baris
24-го августа 2016 в 7:40
2016-08-24T19:40:33+00:00
Дополнительно
Источник
Редактировать
#16614781

Обновлено: Для многих функций, связанных с присутствием, клиенту полезно знать, когда он находится онлайн или оффлайн. Клиенты Firebase Realtime Database предоставляют специальное место по адресу /.info/connected, которое обновляется каждый раз, когда состояние соединения клиента меняется. Вот пример:

DatabaseReference connectedRef = FirebaseDatabase.getInstance().getReference(".info/connected");
connectedRef.addValueEventListener(new ValueEventListener() {
  @Override
  public void onDataChange(DataSnapshot snapshot) {
    boolean connected = snapshot.getValue(Boolean.class);
    if (connected) {
      System.out.println("connected");
    } else {
      System.out.println("not connected");
    }
  }

  @Override
  public void onCancelled(DatabaseError error) {
    System.err.println("Listener was cancelled");
  }
});
14
0
 knod
knod
16-го ноября 2016 в 1:13
2016-11-16T13:13:51+00:00
Дополнительно
Источник
Редактировать
#16614782

Полагаю, это изменилось за последние пару месяцев. В настоящее время инструкции находятся здесь: https://firebase.google.com/docs/database/web/offline-capabilities

Подводя итог:

var presenceRef = firebase.database().ref("disconnectmessage");
// Write a string when this client loses connection
presenceRef.onDisconnect().set("I disconnected!");

и:

var connectedRef = firebase.database().ref(".info/connected");
connectedRef.on("value", function(snap) {
  if (snap.val() === true) {
    alert("connected");
  } else {
    alert("not connected");
  }
});

Признаюсь, я не очень хорошо знаю, как устанавливаются ссылки, или что это значит (вы создаете их из воздуха или должны уже создать их заранее?), или что из этого может вызвать что-то на сервере, а не что-то на front-end, но если ссылка все еще актуальна, когда вы читаете это, немного больше чтения может помочь.

7
0
 KishanSolanki124
KishanSolanki124
20-го января 2018 в 11:13
2018-01-20T11:13:37+00:00
Дополнительно
Источник
Редактировать
#16614783

Для Android вы можете сделать в автономном режиме пользователю всего лишь одну функцию под названием onDisconnect()

Я сделал это в одном из моих чат приложение, в котором пользователь должен получить автоматически в автономном режиме если сетевое подключение потеряно или пользователя отключен от Интернета

DatabaseReference presenceRef = FirebaseDatabase.getInstance().getReference("USERS/24/online_status");

presenceRef.onDisconnect().setValue(0);

На отключение от сети Здесь я делаю online_status 0 id пользователя которого составляет 24 в военнослужащих.

`getReference("по-пользователи/24/online_status и") - это путь к значение нужно обновление офлайн/онлайн.

Вы можете прочитать об этом в оффлайн функции

Обратите внимание, что военнослужащих нужно время около 2-10 минут, чтобы выполнить onDisconnect() функция.

2
0
Piotr Jankiewicz
Piotr Jankiewicz
27-го июня 2018 в 9:18
2018-06-27T09:18:51+00:00
Дополнительно
Источник
Редактировать
#16614784

Предложенное решение не't работа для меня, поэтому я решил проверить связь при письме и чтении 'здоровье/Регистрация' значение. Это код:

const config = {databaseURL: `https://${projectName.trim()}.firebaseio.com/`};
//if app was already initialised delete it
if (firebase.apps.length) {
    await firebase.app().delete();
}
// initialise app
let cloud = firebase.initializeApp(config).database();
// checking connection with the app/database
let connectionRef = cloud.ref('health');
connectionRef.set('check')
    .then(() => {
        return connectionRef.once("value");
    })
    .then(async (snap) => {
        if (snap.val() === 'check') {
            // clear the check input
            await connectionRef.remove();
            // do smth here becasue it works
    }
});

Введите описание изображения здесь

Piotr Jankiewicz
Piotr Jankiewicz
Редактировал ответ 27-го июня 2018 в 11:24
1
0
Subrat  Kumar Palhar
Subrat Kumar Palhar
23-го октября 2019 в 1:21
2019-10-23T13:21:12+00:00
Дополнительно
Источник
Редактировать
#16614785

опорному пункту для web

firebase.database().ref(".info/connected").on("value",(snap)=> {});
 Nikaido
Nikaido
Редактировал ответ 23-го октября 2019 в 2:33
0
0
Добавить вопрос
Категории
Все
Технологий
Культура / Отдых
Жизнь / Искусство
Наука
Профессии
Бизнес
Пользователи
Все
Новые
Популярные
1
Ilya Smirnov
Зарегистрирован 1 день назад
2
Денис Васьков
Зарегистрирован 2 дня назад
3
Dima Patrushev
Зарегистрирован 5 дней назад
4
sirojidddin otaboyev
Зарегистрирован 1 неделю назад
5
Елена Гайдамамакинат
Зарегистрирован 1 неделю назад
ID
JA
KO
RU
© kzen.dev 2023
Источник
stackoverflow.com
под лицензией cc by-sa 3.0 с атрибуцией