如何利用websocket统计用户每天在线时长?

一开始思路是通过onOpenonClose来记录上线和下线时间进行统计。如果上线和下线发生在一天内还比较好统计。如果是用户前一天上线,一直到第二天才下线,第二天又上线一段时间,这样的话,该如何统计?又如用户上线后一直在线好几天,才下线,这样的话,该如何统计“每天”在线时间?

PS:不用质疑用户为何会一直在线这麽长时间,其实用户是指智能终端。

阅读 1.3k
评论 2019-12-24 提问
    6 个回答

    我觉得在计算的时候,应该能获取到设备在线情况吧?如果在线,你既然想计算每天时长,直接认为是到0点就行了。并且打好标记。

    评论 赞赏 2019-12-25

      这个你设个累计时间, 上线就隔段时间累加一次, 比如5分钟就加5.
      然后做个定时任务, 在午夜的时候, 累计时间存入数据库, 清零不就完了.

      评论 赞赏 1月4日

        统计累计在线时长还是实时显示设备在线时长还是显示设备每天累计在线时长?
        累计在线时长onOpen和onClose的时候记录一下就行了,
        实时显示设备在线时长当前时间-onOpen就可以了
        每天在线时长要复杂一些,需要记录当天是否在线过,建议做定时任务,每天生成前一天的在线时长,方法就是onOpen记录登陆点,每半天增加一个在线点,当天不存在在线点即为下线,存在在线点,取出来排序计算时长即可,方法笨了点,但是能用!

        评论 赞赏 2019-12-24
          1. 如果一旦onOpen 当天未onClose 则在线时长为当天23:59:59减去上线时间,如果跨天话,直接是整天噻
          2. 我建议是做心跳,心跳是最好的解决方案
          评论 赞赏 2019-12-25
            小明学走路
            • 1
            • 新人请关照

            image.png
            我采用了最笨的方法14分钟统计一次 在线 则 在线率 +1 有什么更好的解决方法吗

            我这边也是智能终端,采用点名的方式...点到了更新在线率

            评论 赞赏 1月2日

              每隔一分钟1次心跳,怎么样?1次心跳+1分钟在线时间,加点时间点检测,上次心跳时间~本次时间

              评论 赞赏 1月16日
                撰写回答

                登录后参与交流、获取后续更新提醒