關於統計頁面停留時間的一點小思路
阿新 • • 發佈:2018-11-10
首先,我們前端可以對後臺發起一次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); }
我的思路就是這樣。