从服务器检查设备可用性的最佳方法是啥

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!)...使用出色的产品让您的生活更轻松没有错 :-)

以上是关于从服务器检查设备可用性的最佳方法是啥的主要内容,如果未能解决你的问题,请参考以下文章

从工作时间中找到可用时间的最佳方法是啥

从服务器下载文件的最佳方法是啥

从实时视频设备捕获图像以供基于 Java 的应用程序使用的最佳方法是啥?

从 4 个远程服务器中提取大量数据的最佳技术是啥 [关闭]

解析服务器:用远程数据更新本地存储的最佳方法是啥

在 Java 1.5 中,将文件从客户端传输到服务器的最佳方法是啥?