【问题标题】:How to count online users in devise?在设计中如何统计在线用户?
【发布时间】:2013-08-23 03:55:41
【问题描述】:

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

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

【问题讨论】:

  • 我认为这个问题将有助于解决您的问题:stackoverflow.com/questions/5504130/…
  • @zolter 嗯,在答案中,最后一次看到的部分有 10 分钟的缓冲区。我正在寻找接近实时状态变化的东西。
  • 您必须在每次用户登录或注销时不断更新状态,但您将如何跟踪剩余会话?

标签: ruby-on-rails devise


【解决方案1】:

理论上你不能在服务器端简单地做到这一点。

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

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

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

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

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2020-07-02
      • 2018-11-19
      • 1970-01-01
      • 1970-01-01
      • 2011-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多