Я создаю приложение для флаттера, поэтому было бы важно обнаружить почти сразу же, как пользователь отключается от базы данных реального времени / базы данных firestore, и уведомить других пользователей о том же.
Я пробовал рекомендованный метод подпискина .info / подключен в БД реального времени, а также обновляет БД пожарного хранилища.
FirebaseDatabase.instance
.reference()
.child('.info')
.child('connected')
.onValue
.listen((data) {
if (data.snapshot.value == false) {
// Internet has been disconnected
setState(() {
state.connected = false;
});
userFirestoreRef.updateData({
'status': 'offline',
'lastChanged': FieldValue.serverTimestamp(),
});
}
userDbRef.onDisconnect().update({
'status': 'offline',
'lastChanged': ServerValue.timestamp
}).then((_) async {
// This resolves as soon as the server gets the request, not when the user disconnects
setState(() {
state.connected = true;
});
await userDbRef.update({
'status': 'online',
'lastChanged': ServerValue.timestamp,
}).catchError((e) => debugPrint('Error in realtime db auth, $e'));
await userFirestoreRef.updateData({
'status': 'online',
'lastChanged': FieldValue.serverTimestamp(),
}).catchError((e) => debugPrint('Error in firestore auth, $e'));
});
Как только Интернет отключен, БД в реальном времени обнаруживает отключенного пользователя, я хотел бы этогоможет быть максимум 10 секунд.