我有一个网页,我想要显示打开该页面的用户。 (我在服务器端使用node.js)
我目前的尝试:
在服务器端,有一个计数器,用于计算他向该网页提交GET请求的时间。因此,如果他不止一次打开该页面,counter++
每次用户离开网页时,都会使用socket.io将websocket发送到服务器。
window.onbeforeunload = function() {
socket.emit('ClosePage');
}
然后在服务器端,当它收到此套接字时,它会将其计数器减少1,a.k.a counter--
因此,使用此逻辑,可以检测用户何时打开网页以及何时实际关闭网页。
HOWEVER ,当用户像疯了一样刷新页面时会出现问题,服务器会在不减少计数器的情况下连续添加计数器,因为窗口尚未卸载(我的猜测)。
有谁知道如何解决这样的问题?或者有人知道大多数论坛在显示正在阅读帖子的用户或陌生人时使用的算法吗?
非常感谢!
答案 0 :(得分:0)
如果cookie存在,您可以删除cookie并不增加计数。或者你可以阻止IP,但这可能会破坏一些真实的观点。
答案 1 :(得分:0)
关于延迟减去值之前,你是对的。这将与socket.io中的连接超时值相关联。您不能保证每个用户都将使用websockets。如果他们使用XHR轮询或其他类型的传输层,则必须在递减之前超时。 Websocket用户将立即引起更改。
答案 2 :(得分:0)
Google Analytics(分析)会向您显示您网站上的用户以及他们实时查看的内容。