我正在开发一个聊天应用程序,在该应用程序中,我必须维护用户的在线状态,并且我使用的技术是firebase,因此我该怎么做才能获得任何形式的帮助。在此先感谢...如何在Firebase中维护用户的在线状态Android
1
A
回答
1
基于你给不考虑性能和带宽限制的信息,这里是我将如何解决此问题的方法:
使用服务,并在真实的线 - 时间数据库:
内实时数据库,我将有一个OnlineStatus线程,然后我会保存用户ID的子键 - 值对,并设置其值为“绿色”或“黄色”或“红”;这会给我关于用户是在线还是离开的状态。因此,这将是这样的:
OnlineStatus
- 用户1:绿色
- 用户2:黄色
- 用户3:红
创建服务,将检查:
- 该用户已通过身份验证
- 该应用程序在后台
如果用户被认证,并且应用程序是开放的,那么写入到OnlineStatus线程当前用户作为密钥和“绿”作为价值。
如果应用程序在后台并且用户已通过身份验证,则执行相同的操作,但“黄色”是值。
其他任何应该导致颜色“红”。另外请注意,如果用户注销,您可能希望在该操作过程中写入“红色”。
因此,这允许每个设备更新Firebase实时数据库。剩下的就是添加对OnlineStatus位置的引用,以通过ValueEventListener监听更改。
希望这会有所帮助。
1
Mabz看法是正确的概念,但我要强调火力地堡的特点,专门用于解决您的使用案例。
我碰到的麻烦是用'离线'状态更新RealtimeDatabase。即,如果客户端(例如您的Android应用程序)处于脱机状态,它应该如何告知数据库?
解决方案:使用DatabaseRef.onDisconnect()
设置脱机状态自动
DatabaseRef presenceRef =
FirebaseDatabase.getInstance().getReference("disconnectmessage");
// Write a string when this client loses connection
presenceRef.onDisconnect().setValue("I disconnected!");
当你建立一个onDisconnect()操作,操作住在 的火力地堡实时数据库服务器。服务器检查安全 确保用户能够执行所请求的写事件,并通知 了您的应用程序,如果它是无效的。服务器然后监视连接。如果在任何时候连接超时,或者正在积极 通过实时数据库客户端关闭,服务器将检查安全 第二次(以确保操作仍然有效),然后 调用事件。当你的应用程序第一次连接
A(略)更实际的例子可能会做这样的事情:
DatabaseRef userStatus =
FirebaseDatabase.getInstance().getReference("users/<user_id>/status");
userStatus.setValue("online");
userStatus.onDisconnect.setValue("offline");
相关问题
- 1. 在Firebase中维护用户登录状态
- 2. 如何在ExtJS4中维护用户的登录状态?
- 3. 如何在Silverlight中维护状态?
- 4. 维护视图状态android
- 5. 如何在用户控件上维护视图状态
- 6. 如何在Android中维护地图状态?
- 7. 在MVC3中维护dropdownlist的状态
- 8. 在IceFaces中维护状态的问题
- 9. 使用Firebase跟踪用户的在线/离线状态
- 10. 在android应用程序中维护会话或状态的用户名
- 11. 如何在应用程序中维护片段的状态
- 12. 如何维护自动布线Web服务中的状态?
- 13. 在express.js中维护用户登录状态
- 14. 在PHP中维护html控件状态?
- 15. 在余烬中维护多个状态
- 16. 在MVC2控制器中维护状态
- 17. 在JavaScript中维护对象状态DOJO
- 18. 在jqgrid中维护滚动状态
- 19. 在Android中维护应用程序状态
- 20. 如何在PHP类中维护静态成员状态?
- 21. 如何维护WCF服务中的每个客户端状态?
- 22. 禁用状态维护
- 23. 使用TabBarController维护状态
- 24. 如何在backbone.js中维护应用程序状态?
- 25. 如何在Windows Phone 7中维护应用程序状态?
- 26. 如何维护复选框的状态
- 27. 如何维护搜索portlet的状态
- 28. 如何维护活动的状态?
- 29. 在Android中维护用户会话
- 30. 如何查看在线用户状态
谢谢您的回复... –