如何计算在线用户的设计?

时间:2013-08-23 03:55:42

标签: ruby-on-rails devise

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

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

2 个答案:

答案 0 :(得分:1)

理论上,你不能在服务器端明白地做到这一点。

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

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

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

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

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

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

如果你想要简单的解决方案,zolter或Public Activities gem提到的最后一个访问者可能适合你。

答案 1 :(得分:0)

基本思想是打开与服务器的持久连接,并在建立连接时在服务器上递增计数器,并在连接丢失时递减计数器。您可以使用socket.ioPusher之类的内容来轻松实现这一目标。