firebase onDisconnect () не запускается, когда пользователь теряет соединение - PullRequest
1 голос
/ 28 октября 2019

Hello React native community, я пытаюсь использовать onDisconnect() в firebase, но проблема в том, что пустота не срабатывает, когда сеть теряет соединение, но работает, если я закрываю приложение или когдаприложение вылетает.

Этот код работает, если Wi-Fi включен, но не работает вообще, если Wi-Fi выключен ..

firebase.database().ref('users/test/connected').onDisconnect().set(false)

Есть идеи?

1 Ответ

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

Вы можете объединить операции разъединения с мониторингом состояния соединения и отметками времени сервера, чтобы создать систему статуса соединения пользователя. В этой системе каждый пользователь хранит данные в определенном месте базы данных, чтобы предупредить клиента базы данных в реальном времени о подключении к сети. Клиент устанавливает для этого местоположения значение true, когда оно подключается к сети, и метку времени при отключении. Эта временная метка указывает, когда пользователь был в сети в последний раз.

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

// since I can connect from multiple devices or browser tabs, we store each connection instance separately
// any time that connectionsRef's value is null (i.e. has no children) I am offline
var myConnectionsRef = firebase.database().ref('users/test/connections');

// stores the timestamp of my last disconnect (the last time I was seen online)
var lastOnlineRef = firebase.database().ref('users/test/lastOnline');

var connectedRef = firebase.database().ref('.info/connected');
connectedRef.on('value', function(snap) {
  if (snap.val() === true) {
    // We're connected (or reconnected)! Do anything here that should happen only if online (or on reconnect)
    var con = myConnectionsRef.push();

    // When I disconnect, remove this device
    con.onDisconnect().remove();

    // Add this device to my connections list
    // this value could contain info about the device or a timestamp too
    con.set(true);

    // When I disconnect, update the last time I was seen online
    lastOnlineRef.onDisconnect().set(firebase.database.ServerValue.TIMESTAMP);
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...