我正在开发一个聊天应用程序,例如Telegram。用户应该看到他/她的 friend 在线状态(在线/离线)。我搜索了很多,发现服务器必须向设备发送ping,然后设备回复。但我认为它会阻止应用程序以最佳方式使用服务器和设备资源。您假设有 100 万用户,每个时间间隔都有大量 ping,大量设备电池和带宽使用等等。
我还研究了 Firebase 和 GCM。他们检查设备可用性以向他们发送消息,但我无法使用它向用户显示。
我对 Telegram 用于提高用户可用性的技术非常感兴趣。
请让我找到一个最佳的方法。 谢谢
最佳答案
如果你看the blog post @Andre linked到,您会发现解决此问题的“官方”Firebase 方法是在 Firebase 的实时数据库中存储一个指示用户状态的值。所以,逻辑是这样的:
- 使用数据库中的属性来跟踪用户的状态(例如/users/{uid}/status)
- 当用户登录时,您将其状态设置为“在线”
- 当用户注销/将应用程序置于后台/空闲时,您可以更改“状态”属性的值(例如,更改为“离线”(使用博客文章中所示的 .onDisconnect() 方法)。里>
现在,每当您获取该状态的值时,它总是会反射(reflect)用户的在线/离线状态,而不依赖于用户当时实际在线状态。
如果您想向用户显示他们所有 friend 的状态,您只需循环遍历他们 friend 的 uid 列表并获取每个 friend 的相关状态。所有信息/代码似乎都是 in that blog post .
关于android - 从服务器检查设备可用性的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38700118/