1. 程式人生 > >關於統計頁面停留時間的一點小思路

關於統計頁面停留時間的一點小思路

首先,我們前端可以對後臺發起一次ajax請求,來獲取本次訪問的一個唯一ID:

@Autowired
    private StayTimeService stayTimeService;
    @GetMapping("/id")
    public Object in(HttpServletRequest request, @RequestParam("url") String url){
        String ip=request.getRemoteHost();
        StayTime stayTime=new StayTime();
        stayTime.setIp(ip);
        stayTime.setUrl(url);
        stayTime.setTime(new Date());
        stayTime.setResidenceTime(0);
        return stayTimeService.recordAndGetId(stayTime);
    }

我們可以通過如上程式碼對一次頁面請求進行記錄,並返回一個唯一的ID。

然後呢,前臺通過一次ajax請求獲取ID:

$.ajax({
   url:"/ws/stayTime/id?url="+url,
    headers:{"Blog":"Restful"},
    success:function(data){
        id=data;
        console.log("取回ID成功,:"+id);
        heartBeat();
    }
    ,
    error:function(data){
       console.log("取回ID失敗,原因"+data.status);
    }

});

如果取到了ID之後,我們就可以通過輪詢的方式,相隔一定的時間根據ID發起請求,然後後端根據ID更新相應的記錄

function heartBeat(){
    //定時給伺服器傳送心跳
    setInterval(function(){
        $.ajax({
            url:"/ws/stayTime/per/"+id,
            headers:{"Blog":"Restful"},
            success:function(data){
                console.log("心跳成功,:"+data);
            }
            ,
            error:function(data){
                console.log("心跳失敗,原因"+data.status);
            }

        });
    },10000);
}

我的思路就是這樣。