我的项目是识别客户端是在线还是离线。我使用 Android-Firebase 文档中提供的代码,该代码使用“.info/connected”中的 EventListener。
此方法可以正确识别用户何时终止或重新打开应用程序,或者何时在互联网上发生轻微的断开连接。但是,我做了一个测试,关闭设备的Wifi 2分钟,在Firebase数据库中识别出它未连接,但是当我打开Wifi,恢复互联网连接时,Firebase无法识别活动连接,看起来好像用户仍处于非活动状态。
11-14 10:12:55.272 27901-27926/com.example.davi.projetofirebase D/PersistentConnection: pc_0 - 尝试获取身份验证令牌
11-14 10:12:55.276 27901-27926/com.example.davi.projetofirebase D/PersistentConnection: pc_0 - 成功获取令牌,打开连接
11-14 10:12:55.281 27901-27926/com.example.davi.projetofirebase D/连接:conn_14 - 打开连接
11-14 10:12:55.293 27901-27926/com.example.davi.projetofirebase D/WebSocket: ws_14 - WebSocket 错误。
bkx:未知主机:s-usc1c-nss-208.firebaseio.com
在 bku.d(:com.google.android.gms.DynamiteModulesC@11746448:102)
在 bkv.run(:com.google.android.gms.DynamiteModulesC@11746448:4)
在 java.lang.Thread.run(Thread.java:760)
引起:java.net.UnknownHostException:s-usc1c-nss-208.firebaseio.com
在 java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:174)
在 java.net.SocksSocketImpl.connect(SocksSocketImpl.java:356)
在 java.net.Socket.connect(Socket.java:586)
在 com.android.org.conscrypt.OpenSSLSocketImpl.connect(OpenSSLSocketImpl.java:265)
在 com.android.org.conscrypt.OpenSSLSocketImpl.connect(OpenSSLSocketImpl.java:252)
在 java.net.Socket.(Socket.java:427)
在 java.net.Socket.(Socket.java:210)
在 javax.net.ssl.SSLSocket.(SSLSocket.java:906)
在 com.android.org.conscrypt.OpenSSLSocketImpl.(OpenSSLSocketImpl.java:192)
在 com.android.org.conscrypt.OpenSSLSocketFactoryImpl.createSocket(OpenSSLSocketFactoryImpl.java:68)
在 bku.d(:com.google.android.gms.DynamiteModulesC@11746448:94)
在 bkv.run(:com.google.android.gms.DynamiteModulesC@11746448:4)
在 java.lang.Thread.run(Thread.java:760)
11-14 10:12:55.294 27901-27926/com.example.davi.projetofirebase D/WebSocket: ws_14 - 自行关闭
11-14 10:12:55.295 27901-27926/com.example.davi.projetofirebase D/连接:conn_14 - 实时连接失败
11-14 10:12:55.295 27901-27926/com.example.davi.projetofirebase D/连接:conn_14 - 关闭实时连接
11-14 10:12:55.295 27901-27926/com.example.davi.projetofirebase D/PersistentConnection:pc_0 - 由于其他原因断开连接
11-14 10:12:55.296 27901-27926/com.example.davi.projetofirebase D/PersistentConnection: pc_0 - 计划连接尝试
11-14 10:12:55.297 27901-27926/com.example.davi.projetofirebase D/ConnectionRetryHelper:安排在 27403ms 内重试
11-14 10:12:55.304 27901-27926/com.example.davi.projetofirebase D/WebSocket: ws_14 - 已关闭
11-14 10:13:02.947 27901-27926/com.example.davi.projetofirebase D/PersistentConnection:pc_0 - 连接中断:connection_idle
11-14 10:13:02.960 27901-27926/com.example.davi.projetofirebase D/ConnectionRetryHelper:取消现有重试尝试