0

我有一个网页,我想显示打开该页面的用户。(我在服务器端使用 node.js)

我目前的尝试:

在服务器端,有一个计数器可以计算他向该网页提交 GET 请求的时间。因此,如果他多次打开该页面,counter++

每次用户离开网页时,它都会使用 socket.io 向服务器发送一个 websocket。

window.onbeforeunload = function() { 
    socket.emit('ClosePage');
}

然后在服务器端,当它接收到这个套接字时,它会将他的计数器减 1,也就是counter--

因此,使用此逻辑,可以检测用户何时打开网页以及何时真正关闭网页。

但是,当用户像疯了一样刷新页面时会出现问题,服务器只会不断地增加计数器而不会减少它,因为窗口还没有卸载(我的猜测)。

有谁知道如何修复这样的东西?或者有谁知道大多数论坛在显示正在阅读帖子的用户或陌生人时使用什么算法?

非常感谢!

4

3 回答 3

0

如果 cookie 存在,您可以删除 cookie 并且不增加计数。或者你可以屏蔽 IP,但这可能会破坏一些真实的观点。

于 2013-08-15T23:41:10.300 回答
0

You're right about that regarding the delay before it decrements the value. This will be correlated with the connection timeout value in socket.io. You can't guarantee that every user will be using websockets. If they are using XHR-polling or other types of transport layers it will have to timeout before decrementing. Websocket users will cause the change immediately.

于 2013-08-15T23:42:20.513 回答
0

Google analytics shows you who is on your site and what content they are viewing in real time.

于 2013-08-16T02:21:36.003 回答