0

在使用设计的 ROR 应用程序中计算在线用户的最有效方法是什么?

我正在考虑添加一个名为statususers 表的字段并根据几种情况对其进行更新。关于这个主题的最佳实践是什么?

4

2 回答 2

1

从理论上讲,您不能在服务器端简单地做到这一点。

服务器是无状态的。访客请求某些东西,服务器给它,然后再见,仅此而已。

那么像 Google Analytice 这样的“在线”解决方案是如何工作的呢?

基本情况是,访问者会在他们的浏览器上运行一段 JS 代码,从您的服务器或 Google 的服务器下载。然后 JS 代码以一定的时间间隔向服务器发送请求,声称该访问者仍然“在线”。

如果一段时间后该访问者没有此类请求,则他“离线”。

JS 代码还可以向服务器发送请求,要求更新访问者状态的视图,因此访问者可以看到其他一些访问者“在线”。

如果完全在您自己的服务器上实现,该解决方案可能会有点复杂,并且需要更高效的存储,例如 Redis 甚至一些实时解决方案。我以前没有研究过这样的宝石,你可以检查一些是否存在于分析类别中。

如果您想要简单的解决方案,zolter 或公共活动 gem 提到的最后一位访客可能适合您。

于 2013-08-23T05:21:58.860 回答
0

基本思想是打开与服务器的持久连接,并在建立连接时在服务器上增加一个计数器,并在连接丢失时减少它。您可以使用诸如socket.ioPusher之类的东西来简化此操作。

于 2013-08-23T05:27:49.757 回答