我有一个网页,我想显示打开该网页的用户。(我使用node.js作为服务器端)
我当前的尝试:
在服务器端,有一个计数器计算他向该网页提交GET请求的时间。因此,如果他多次打开该页面,counter++
每次用户离开网页时,都会使用socket.io.向服务器发送一个websocket
window.onbeforeunload = function() {
socket.emit('ClosePage');
}
然后在服务器端,当它接收到这个套接字时,它将计数器减少1,也称为counter--
因此,使用这种逻辑,可以检测用户何时打开网页,以及何时真正关闭网页。
但是,当用户疯狂地刷新页面时,问题就会出现,服务器会不断地增加计数器,而之后不会减少,因为窗口还没有卸载(我猜)。
有人知道怎么修理这样的东西吗?或者有人知道大多数论坛在显示正在阅读帖子的用户或陌生人时使用什么算法吗?
非常感谢!
如果存在cookie,则可以删除cookie而不增加计数。或者你可以屏蔽IP,但这可能会破坏一些真实的观点。
关于延迟值递减之前的延迟,您是对的。这将与socket.io中的连接超时值相关联。你不能保证每个用户都会使用websocket。如果他们使用XHR轮询或其他类型的传输层,则在递减之前必须超时。Websocket用户将立即引起更改。
谷歌分析会实时显示谁在你的网站上以及他们正在查看什么内容。