NODE Analytics跟踪用户,每页组轮询使用使用情况统计信息

时间:2019-08-17 21:33:43

标签: node.js mongodb

我有一个基本的NODE脚本作为更大应用程序的一部分。

现在在节点脚本中,我使用on connection / disconnect登录到简单的MongoDB集合。

现有代码

    // on connection
io.on('connection', function(client) {

    // If token is sent (should always be)
    if(client.handshake.query.token) {

        // datastore
        var obj = {
            reference: client.handshake.query.token,
            action: client.handshake.query.action,
            online: new Date();
        };

        // insert data
        var collection = db.collection('online');
        collection.insertOne(obj);

    }

    //  on disconnect, clear up record
    client.on('disconnect', function() {

        //  check for token
        if(client.handshake.query.token) {

            // delete based on reference 
            var reference = client.handshake.query.token;
            var collection = db.collection('online');
            collection.deleteMany(
                {"reference": reference});

        }

    });
});

理想场景 我想为每个参考和操作保存一个动作和时间的持久日志(例如,每个页面上的时间);

//  on disconnect, update leaving date/time for analytic tracking
    client.on('disconnect', function() {

        //  check for token
        if(client.handshake.query.token) {

            // delete based on reference 
            var reference = client.handshake.query.token;
            var action = client.handshake.query.action;
            var collection = db.collection('online');
            collection.updateOne(
                {"reference": reference, "action": action},
                {"offline": new Date()});

        }

    });

这个想法应该可行,但是由于节点用户正在进行池化,因此我得到了数百条记录。如果我打开页面,则会得到数百条或日志记录,并且没有“离线”断开连接更新。

您将如何基于每个客户端的操作创建此选项,并允许多个选项卡?和池化。

我可以更改通过脚本发送的数据,MongoDB是最新的,因此可以用任何可行的方式进行设置。

谢谢。

0 个答案:

没有答案