【发布时间】:2015-12-21 16:57:29
【问题描述】:
也许我理解 firebase 的 onDisconnectSetValue 错误,但我希望如下: 在firebase中,如果应用程序与firebase连接,我有一个值为“active”的值。如果连接丢失,我喜欢使用 onDisconnectSetValue 将值设置为 false。 为了测试它,我执行以下操作: - 使用互联网连接启动应用程序(设置 wlan) - 应用程序将“活动”设置为真 - 现在我切断互联网连接(关闭无线局域网)
现在我希望 firebase 自动将“Active”设置为 false,但该值保持为 true。
奇怪的是,如果我重新连接到互联网(再次打开 wlan),“活动”设置为 false。
代码:
Firebase *userAppActiveRef = [Firebase userAppActiveRef: user.entityID];
Firebase *infoRef = [Firebase infoRef];
[infoRef observeEventType:FEventTypeValue withBlock:^(FDataSnapshot *snapshot) {
if([snapshot.value boolValue]) {
NSLog(@"connected");
[userAppActiveRef setValue: @YES];
[userAppActiveRef onDisconnectSetValue: @NO];
} else {
NSLog(@"not connected");
}
}];
infoRef = .../.info/connected
我做错了什么或者 onDisconnectSetValue 没有按照我的想法工作?
【问题讨论】:
-
如果你强行断开连接(而不是调用
goOffline()),服务器会在套接字超时后检测到客户端已经消失。这通常需要几分钟。你等了多久? -
大约 5 - 20 分钟(4 次尝试)。正如我所提到的,奇怪的是我重新连接到互联网后该值发生了变化。我等多久是独立的。是否有可能设置套接字超时?或者我在哪里可以看到设置的超时时间?