由于我饿了,所以今天我在德国外卖页面上吃饭。当我访问该页面时,将显示一个弹出窗口,其中显示页面上的当前访问者:
所以我问自己,他们到底是怎么做到的?因此,我尝试在一个巨大的JS文件中进行一些研究,发现以下内容:
这是构建此对话框的功能的一部分:
getVisitorsTitle: function() {
return this.getNumberOfVisitors() + " " + s("stickyNote.title")
},
getNumberOfVisitors: function() {
var e, t;
return t = this.bigCityList.indexOf(this.city) > -1 ? {
max: 8,
min: 2
} : {
max: 5,
min: 2
}, e = Math.floor(Math.random() * (t.max - t.min + 1)) + t.min, e = this.getVisitorBoost(e)
}
所以我不确定100%,但是我认为访客计数器不是真正的计数器。它只是一个范围内生成的随机数。所以这是一个谎言!
现在,我问自己是否有一种方法可以吸引当前的网页访问者而不会伪造随机数呢?
答案 0 :(得分:4)
一般方法很容易可视化-每当用户打开页面时,都打开Websocket(或类似的东西),以便在客户端和服务器之间进行双向通信。让服务器计算该页面上当前具有活动Websocket连接的数量(从所有客户端,如果需要,过滤掉重复的IP地址),并在该数量更改时将数据发送到客户端。然后,客户端可以在浏览器中更新适当的数字文本。
尽管,Websocket不是必需的-通过重复的Ajax调用,您可以实现相同的目的(例如,每隔两分钟从服务器请求该号码,然后服务器响应过去几分钟内发出请求的客户数量),情况只会更加混乱。