【发布时间】:2020-11-27 02:58:12
【问题描述】:
所以问题是关于 firebase 中的 onDisconnect,我在颤振和使用 Firebase 中实现了一个类似 whatsapp 的聊天应用程序,此时卡住了 onDisconnect 事件需要 2-3 分钟才能在您无法访问互联网时触发:
-
我知道这需要很多时间,因为它正在等待套接字超时以指定用户已完全断开连接
-
我尝试使用
goOffline,但没有成功,至少我想让onDisconnect事件被更快地触发。 -
我有一个解决方法,通过使计时器颤动,并且每个 X 周期我更新一个时间戳,表明该用户还活着,但问题是当他离线时谁会触发该用户的离线状态?云功能,还是其他在线连接用户?由于该用户在 X 周期内没有回复,因此我们需要将他的状态更新为离线。
-
这个问题有解决办法吗?
提前致谢。
我正在使用的示例代码:
在initState()我正在听/.info/connected:
FirebaseDatabase.instance
.reference()
.child('/.info/connected')
.onValue
.listen((data) {
print('bool value');
print(data.snapshot.value);
if (data.snapshot.value == false) {
//user dc
print('user disconnected');
FirebaseDatabase.instance.goOffline().then((value) => print("offline"));
} else {
print('user reconnected');
FirebaseDatabase.instance.goOnline().then((value) => print("user online again"));
FirebaseDatabase.instance.reference().child('uid').onDisconnect().set({'status': 'offline'}).then((value) => print('here I am '));
}
});
【问题讨论】:
标签: firebase flutter firebase-realtime-database