Node.js Nodejs实时在线用户计数器

Node.js Nodejs实时在线用户计数器,node.js,google-analytics,socket.io,Node.js,Google Analytics,Socket.io,我有一个网站,使用nodejs和socket.io实现了一个实时在线用户计数器。代码如下: $io.on('connection', function (socket) { var $ip_address = socket.handshake.address; if ($ips_connected.hasOwnProperty($ip_address)) { $ips_connected[$ip_address]++; } else {

我有一个网站,使用nodejs和socket.io实现了一个实时在线用户计数器。代码如下:

$io.on('connection', function (socket) {

    var $ip_address = socket.handshake.address;
    if ($ips_connected.hasOwnProperty($ip_address)) {
        $ips_connected[$ip_address]++;
    } else {
        $ips_connected[$ip_address] = 1;
        $connected_users++;


        if ($connected_users > $max_users)
            $max_users = $connected_users;
    }

    socket.emit('update', $connected_users);

    socket.on('disconnect', function () {
        if ($ips_connected.hasOwnProperty($ip_address)) {
            $ips_connected[$ip_address]--;
            if ($ips_connected[$ip_address] <= 0) {
                delete $ips_connected[$ip_address];
                $connected_users--;
            }
        }
    });

    socket.on('update', function () {
        socket.emit('update', $connected_users);
    });

});
$io.on('connection',函数(socket){
var$ip_address=socket.handshake.address;
如果($ips\u connected.hasOwnProperty($ip\u address)){
$ips_connected[$ip_address]++;
}否则{
$ips_connected[$ip_address]=1;
$connected_users++;
如果($connected\u users>$max\u users)
$max_users=$connected_users;
}
发出('update',$connected_users);
socket.on('disconnect',function(){
如果($ips\u connected.hasOwnProperty($ip\u address)){
$ips_connected[$ip_address]--;

如果($ips\u connected[$ip\u address]我在某些浏览器中看到过一些场景,如IE8、IE6和其他不记得的浏览器……socket.io常见的情况是,断开
连接
并自动重新启动,而不调用
断开连接
。 我的建议是为每个连接生成一个唯一的id,以控制它是否真的是一个新连接