从服务器检查设备可用性的最佳方法是啥
Posted
技术标签:
【中文标题】从服务器检查设备可用性的最佳方法是啥【英文标题】:What is the Optimal approuch to check devices availability from Server从服务器检查设备可用性的最佳方法是什么 【发布时间】:2016-08-01 13:25:36 【问题描述】:我正在开发一个 聊天应用程序,例如 Telegram。用户应该看到他/她的朋友可用性(在线/离线)。我搜索了很多,发现服务器必须向设备发送 ping 并返回设备 reply。但我认为它会阻止应用程序以最佳方式使用服务器和设备资源。您假设有一百万个用户,每个时间间隔内都有大量 ping,大量设备电池和带宽使用等等。
我还研究了 Firebase 和 GCM。他们检查设备可用性以向他们发送消息,但我无法使用它向用户显示。
我对 Telegram 用于提高用户可用性的技术非常感兴趣。
请让我找到最佳方法。 谢谢
【问题讨论】:
我认为this 正是您想要的。 @AndréKool 谢谢,它真的很有用。如果如何在我自己的服务器上实现它,您有什么想法吗? 关于您现在已删除的问题,请检查dmesg
以查看Apache 是否因内存不足而被系统杀死。你也可以ps aux | grep httpd
看看Apache 是否还在运行(我认为Centos 使用“httpd”而不是“apache”)。
【参考方案1】:
如果您查看the blog post @Andre linked,您会发现“官方”Firebase 解决此问题的方法是在 Firebase 的实时数据库中存储一个指示用户状态的值。所以,逻辑是这样的:
使用数据库中的属性来跟踪用户的状态(例如 /users/uid/status) 当用户登录时,您将其状态设置为“在线” 当用户注销/将应用程序置于后台/空闲时,您可以更改“状态”属性的值(例如,更改为“离线”(使用博客文章中所示的 .onDisconnect() 方法)。现在,无论您何时获取该状态的值,它都会始终反映用户的在线/离线状态,而不依赖于用户当时实际在线。
如果您想向用户显示他们所有朋友的状态,您只需遍历他们朋友的 uid 列表并获取每个人的相关状态。所有信息/代码似乎都是in that blog post。
【讨论】:
哦,谢谢@James;我可以使用任何独立于 Firebase 的通用方法吗?我的意思是我可以在我的服务器上使用它? @MustafaMohammadi 我不确定我是否理解。为什么不想使用 Firebase? 实际上,我试图让家庭解决问题和解决方案。 Firebase 真的是一个很棒的服务器,一切都准备好了,我觉得这让我很懒惰。你怎么看?谢谢 @MustafaMohammadi 似乎你想让生活变得太艰难。只需使用 Firebase(将消息推送到用户的节点,这样您就不必使用 FCM!)...使用出色的产品让您的生活更轻松没有错 :-)以上是关于从服务器检查设备可用性的最佳方法是啥的主要内容,如果未能解决你的问题,请参考以下文章